<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">{-
(c) The AQUA Project, Glasgow University, 1994-1998


Wired-in knowledge about primitive types
-}</span><span>
</span><span id="line-7"></span><span>
</span><span id="line-8"></span><span class="hs-pragma">{-# LANGUAGE CPP #-}</span><span>
</span><span id="line-9"></span><span class="hs-pragma">{-# OPTIONS_GHC -Wno-incomplete-uni-patterns #-}</span><span>
</span><span id="line-10"></span><span>
</span><span id="line-11"></span><span class="hs-comment">-- | This module defines TyCons that can't be expressed in Haskell.</span><span>
</span><span id="line-12"></span><span class="hs-comment">--   They are all, therefore, wired-in TyCons.  C.f module &quot;GHC.Builtin.Types&quot;</span><span>
</span><span id="line-13"></span><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">GHC.Builtin.Types.Prim</span><span class="hs-special">(</span><span>
</span><span id="line-14"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkPrimTyConName"><span class="hs-identifier">mkPrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-comment">-- For implicit parameters in GHC.Builtin.Types only</span><span>
</span><span id="line-15"></span><span>
</span><span id="line-16"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkTemplateKindVars"><span class="hs-identifier">mkTemplateKindVars</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkTemplateTyVars"><span class="hs-identifier">mkTemplateTyVars</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkTemplateTyVarsFrom"><span class="hs-identifier">mkTemplateTyVarsFrom</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-17"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkTemplateKiTyVars"><span class="hs-identifier">mkTemplateKiTyVars</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkTemplateKiTyVar"><span class="hs-identifier">mkTemplateKiTyVar</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-18"></span><span>
</span><span id="line-19"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkTemplateTyConBinders"><span class="hs-identifier">mkTemplateTyConBinders</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkTemplateKindTyConBinders"><span class="hs-identifier">mkTemplateKindTyConBinders</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-20"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkTemplateAnonTyConBinders"><span class="hs-identifier">mkTemplateAnonTyConBinders</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-21"></span><span>
</span><span id="line-22"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#alphaTyVars"><span class="hs-identifier">alphaTyVars</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#alphaTyVar"><span class="hs-identifier">alphaTyVar</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#betaTyVar"><span class="hs-identifier">betaTyVar</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#gammaTyVar"><span class="hs-identifier">gammaTyVar</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#deltaTyVar"><span class="hs-identifier">deltaTyVar</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-23"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#alphaTys"><span class="hs-identifier">alphaTys</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#alphaTy"><span class="hs-identifier">alphaTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#betaTy"><span class="hs-identifier">betaTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#gammaTy"><span class="hs-identifier">gammaTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#deltaTy"><span class="hs-identifier">deltaTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-24"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#alphaTyVarsUnliftedRep"><span class="hs-identifier">alphaTyVarsUnliftedRep</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#alphaTyVarUnliftedRep"><span class="hs-identifier">alphaTyVarUnliftedRep</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-25"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#alphaTysUnliftedRep"><span class="hs-identifier">alphaTysUnliftedRep</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#alphaTyUnliftedRep"><span class="hs-identifier">alphaTyUnliftedRep</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-26"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#runtimeRep1TyVar"><span class="hs-identifier">runtimeRep1TyVar</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#runtimeRep2TyVar"><span class="hs-identifier">runtimeRep2TyVar</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#runtimeRep1Ty"><span class="hs-identifier">runtimeRep1Ty</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#runtimeRep2Ty"><span class="hs-identifier">runtimeRep2Ty</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-27"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#openAlphaTy"><span class="hs-identifier">openAlphaTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#openBetaTy"><span class="hs-identifier">openBetaTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#openAlphaTyVar"><span class="hs-identifier">openAlphaTyVar</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#openBetaTyVar"><span class="hs-identifier">openBetaTyVar</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-28"></span><span>
</span><span id="line-29"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#multiplicityTyVar"><span class="hs-identifier">multiplicityTyVar</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-30"></span><span>
</span><span id="line-31"></span><span>        </span><span class="hs-comment">-- Kind constructors...</span><span>
</span><span id="line-32"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#tYPETyCon"><span class="hs-identifier">tYPETyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#tYPETyConName"><span class="hs-identifier">tYPETyConName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-33"></span><span>
</span><span id="line-34"></span><span>        </span><span class="hs-comment">-- Kinds</span><span>
</span><span id="line-35"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#tYPE"><span class="hs-identifier">tYPE</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#primRepToRuntimeRep"><span class="hs-identifier">primRepToRuntimeRep</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-36"></span><span>
</span><span id="line-37"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#functionWithMultiplicity"><span class="hs-identifier">functionWithMultiplicity</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-38"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#funTyCon"><span class="hs-identifier">funTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#funTyConName"><span class="hs-identifier">funTyConName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-39"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#unexposedPrimTyCons"><span class="hs-identifier">unexposedPrimTyCons</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#exposedPrimTyCons"><span class="hs-identifier">exposedPrimTyCons</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#primTyCons"><span class="hs-identifier">primTyCons</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-40"></span><span>
</span><span id="line-41"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#charPrimTyCon"><span class="hs-identifier">charPrimTyCon</span></a></span><span class="hs-special">,</span><span>          </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#charPrimTy"><span class="hs-identifier">charPrimTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#charPrimTyConName"><span class="hs-identifier">charPrimTyConName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-42"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#intPrimTyCon"><span class="hs-identifier">intPrimTyCon</span></a></span><span class="hs-special">,</span><span>           </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#intPrimTy"><span class="hs-identifier">intPrimTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#intPrimTyConName"><span class="hs-identifier">intPrimTyConName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-43"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#wordPrimTyCon"><span class="hs-identifier">wordPrimTyCon</span></a></span><span class="hs-special">,</span><span>          </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#wordPrimTy"><span class="hs-identifier">wordPrimTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#wordPrimTyConName"><span class="hs-identifier">wordPrimTyConName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-44"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#addrPrimTyCon"><span class="hs-identifier">addrPrimTyCon</span></a></span><span class="hs-special">,</span><span>          </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#addrPrimTy"><span class="hs-identifier">addrPrimTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#addrPrimTyConName"><span class="hs-identifier">addrPrimTyConName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-45"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#floatPrimTyCon"><span class="hs-identifier">floatPrimTyCon</span></a></span><span class="hs-special">,</span><span>         </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#floatPrimTy"><span class="hs-identifier">floatPrimTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#floatPrimTyConName"><span class="hs-identifier">floatPrimTyConName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-46"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#doublePrimTyCon"><span class="hs-identifier">doublePrimTyCon</span></a></span><span class="hs-special">,</span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#doublePrimTy"><span class="hs-identifier">doublePrimTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#doublePrimTyConName"><span class="hs-identifier">doublePrimTyConName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-47"></span><span>
</span><span id="line-48"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#voidPrimTyCon"><span class="hs-identifier">voidPrimTyCon</span></a></span><span class="hs-special">,</span><span>          </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#voidPrimTy"><span class="hs-identifier">voidPrimTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-49"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#statePrimTyCon"><span class="hs-identifier">statePrimTyCon</span></a></span><span class="hs-special">,</span><span>         </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkStatePrimTy"><span class="hs-identifier">mkStatePrimTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-50"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#realWorldTyCon"><span class="hs-identifier">realWorldTyCon</span></a></span><span class="hs-special">,</span><span>         </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#realWorldTy"><span class="hs-identifier">realWorldTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#realWorldStatePrimTy"><span class="hs-identifier">realWorldStatePrimTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-51"></span><span>
</span><span id="line-52"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#proxyPrimTyCon"><span class="hs-identifier">proxyPrimTyCon</span></a></span><span class="hs-special">,</span><span>         </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkProxyPrimTy"><span class="hs-identifier">mkProxyPrimTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-53"></span><span>
</span><span id="line-54"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#arrayPrimTyCon"><span class="hs-identifier">arrayPrimTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkArrayPrimTy"><span class="hs-identifier">mkArrayPrimTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-55"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#byteArrayPrimTyCon"><span class="hs-identifier">byteArrayPrimTyCon</span></a></span><span class="hs-special">,</span><span>     </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#byteArrayPrimTy"><span class="hs-identifier">byteArrayPrimTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-56"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#arrayArrayPrimTyCon"><span class="hs-identifier">arrayArrayPrimTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkArrayArrayPrimTy"><span class="hs-identifier">mkArrayArrayPrimTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-57"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#smallArrayPrimTyCon"><span class="hs-identifier">smallArrayPrimTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkSmallArrayPrimTy"><span class="hs-identifier">mkSmallArrayPrimTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-58"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mutableArrayPrimTyCon"><span class="hs-identifier">mutableArrayPrimTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkMutableArrayPrimTy"><span class="hs-identifier">mkMutableArrayPrimTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-59"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mutableByteArrayPrimTyCon"><span class="hs-identifier">mutableByteArrayPrimTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkMutableByteArrayPrimTy"><span class="hs-identifier">mkMutableByteArrayPrimTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-60"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mutableArrayArrayPrimTyCon"><span class="hs-identifier">mutableArrayArrayPrimTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkMutableArrayArrayPrimTy"><span class="hs-identifier">mkMutableArrayArrayPrimTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-61"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#smallMutableArrayPrimTyCon"><span class="hs-identifier">smallMutableArrayPrimTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkSmallMutableArrayPrimTy"><span class="hs-identifier">mkSmallMutableArrayPrimTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-62"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mutVarPrimTyCon"><span class="hs-identifier">mutVarPrimTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkMutVarPrimTy"><span class="hs-identifier">mkMutVarPrimTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-63"></span><span>
</span><span id="line-64"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mVarPrimTyCon"><span class="hs-identifier">mVarPrimTyCon</span></a></span><span class="hs-special">,</span><span>                  </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkMVarPrimTy"><span class="hs-identifier">mkMVarPrimTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-65"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#ioPortPrimTyCon"><span class="hs-identifier">ioPortPrimTyCon</span></a></span><span class="hs-special">,</span><span>                </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkIOPortPrimTy"><span class="hs-identifier">mkIOPortPrimTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-66"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#tVarPrimTyCon"><span class="hs-identifier">tVarPrimTyCon</span></a></span><span class="hs-special">,</span><span>                  </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkTVarPrimTy"><span class="hs-identifier">mkTVarPrimTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-67"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#stablePtrPrimTyCon"><span class="hs-identifier">stablePtrPrimTyCon</span></a></span><span class="hs-special">,</span><span>             </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkStablePtrPrimTy"><span class="hs-identifier">mkStablePtrPrimTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-68"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#stableNamePrimTyCon"><span class="hs-identifier">stableNamePrimTyCon</span></a></span><span class="hs-special">,</span><span>            </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkStableNamePrimTy"><span class="hs-identifier">mkStableNamePrimTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-69"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#compactPrimTyCon"><span class="hs-identifier">compactPrimTyCon</span></a></span><span class="hs-special">,</span><span>               </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#compactPrimTy"><span class="hs-identifier">compactPrimTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-70"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#bcoPrimTyCon"><span class="hs-identifier">bcoPrimTyCon</span></a></span><span class="hs-special">,</span><span>                   </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#bcoPrimTy"><span class="hs-identifier">bcoPrimTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-71"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#weakPrimTyCon"><span class="hs-identifier">weakPrimTyCon</span></a></span><span class="hs-special">,</span><span>                  </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkWeakPrimTy"><span class="hs-identifier">mkWeakPrimTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-72"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#threadIdPrimTyCon"><span class="hs-identifier">threadIdPrimTyCon</span></a></span><span class="hs-special">,</span><span>              </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#threadIdPrimTy"><span class="hs-identifier">threadIdPrimTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-73"></span><span>
</span><span id="line-74"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#int8PrimTyCon"><span class="hs-identifier">int8PrimTyCon</span></a></span><span class="hs-special">,</span><span>          </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#int8PrimTy"><span class="hs-identifier">int8PrimTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#int8PrimTyConName"><span class="hs-identifier">int8PrimTyConName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-75"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#word8PrimTyCon"><span class="hs-identifier">word8PrimTyCon</span></a></span><span class="hs-special">,</span><span>         </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#word8PrimTy"><span class="hs-identifier">word8PrimTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#word8PrimTyConName"><span class="hs-identifier">word8PrimTyConName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-76"></span><span>
</span><span id="line-77"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#int16PrimTyCon"><span class="hs-identifier">int16PrimTyCon</span></a></span><span class="hs-special">,</span><span>         </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#int16PrimTy"><span class="hs-identifier">int16PrimTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#int16PrimTyConName"><span class="hs-identifier">int16PrimTyConName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-78"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#word16PrimTyCon"><span class="hs-identifier">word16PrimTyCon</span></a></span><span class="hs-special">,</span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#word16PrimTy"><span class="hs-identifier">word16PrimTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#word16PrimTyConName"><span class="hs-identifier">word16PrimTyConName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-79"></span><span>
</span><span id="line-80"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#int32PrimTyCon"><span class="hs-identifier">int32PrimTyCon</span></a></span><span class="hs-special">,</span><span>         </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#int32PrimTy"><span class="hs-identifier">int32PrimTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#int32PrimTyConName"><span class="hs-identifier">int32PrimTyConName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-81"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#word32PrimTyCon"><span class="hs-identifier">word32PrimTyCon</span></a></span><span class="hs-special">,</span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#word32PrimTy"><span class="hs-identifier">word32PrimTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#word32PrimTyConName"><span class="hs-identifier">word32PrimTyConName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-82"></span><span>
</span><span id="line-83"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#int64PrimTyCon"><span class="hs-identifier">int64PrimTyCon</span></a></span><span class="hs-special">,</span><span>         </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#int64PrimTy"><span class="hs-identifier">int64PrimTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#int64PrimTyConName"><span class="hs-identifier">int64PrimTyConName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-84"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#word64PrimTyCon"><span class="hs-identifier">word64PrimTyCon</span></a></span><span class="hs-special">,</span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#word64PrimTy"><span class="hs-identifier">word64PrimTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#word64PrimTyConName"><span class="hs-identifier">word64PrimTyConName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-85"></span><span>
</span><span id="line-86"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#eqPrimTyCon"><span class="hs-identifier">eqPrimTyCon</span></a></span><span class="hs-special">,</span><span>            </span><span class="hs-comment">-- ty1 ~# ty2</span><span>
</span><span id="line-87"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#eqReprPrimTyCon"><span class="hs-identifier">eqReprPrimTyCon</span></a></span><span class="hs-special">,</span><span>        </span><span class="hs-comment">-- ty1 ~R# ty2  (at role Representational)</span><span>
</span><span id="line-88"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#eqPhantPrimTyCon"><span class="hs-identifier">eqPhantPrimTyCon</span></a></span><span class="hs-special">,</span><span>       </span><span class="hs-comment">-- ty1 ~P# ty2  (at role Phantom)</span><span>
</span><span id="line-89"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#equalityTyCon"><span class="hs-identifier">equalityTyCon</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-90"></span><span>
</span><span id="line-91"></span><span>        </span><span class="annot"><span class="hs-comment">-- * SIMD</span></span><span class="hs-cpp">
#include &quot;primop-vector-tys-exports.hs-incl&quot;
</span><span>  </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span class="hs-cpp">

#include &quot;HsVersions.h&quot;
</span><span>
</span><span id="line-97"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Prelude.html"><span class="hs-identifier">GHC.Prelude</span></a></span><span>
</span><span id="line-98"></span><span>
</span><span id="line-99"></span><span class="hs-keyword">import</span><span> </span><span class="hs-pragma">{-# SOURCE</span><span> </span><span class="hs-pragma">#-}</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html"><span class="hs-identifier">GHC.Builtin.Types</span></a></span><span>
</span><span id="line-100"></span><span>  </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#runtimeRepTy"><span class="hs-identifier">runtimeRepTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#unboxedTupleKind"><span class="hs-identifier">unboxedTupleKind</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#liftedTypeKind"><span class="hs-identifier">liftedTypeKind</span></a></span><span>
</span><span id="line-101"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#vecRepDataConTyCon"><span class="hs-identifier">vecRepDataConTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#tupleRepDataConTyCon"><span class="hs-identifier">tupleRepDataConTyCon</span></a></span><span>
</span><span id="line-102"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#liftedRepDataConTy"><span class="hs-identifier">liftedRepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#unliftedRepDataConTy"><span class="hs-identifier">unliftedRepDataConTy</span></a></span><span>
</span><span id="line-103"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#intRepDataConTy"><span class="hs-identifier">intRepDataConTy</span></a></span><span>
</span><span id="line-104"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#int8RepDataConTy"><span class="hs-identifier">int8RepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#int16RepDataConTy"><span class="hs-identifier">int16RepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#int32RepDataConTy"><span class="hs-identifier">int32RepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#int64RepDataConTy"><span class="hs-identifier">int64RepDataConTy</span></a></span><span>
</span><span id="line-105"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#wordRepDataConTy"><span class="hs-identifier">wordRepDataConTy</span></a></span><span>
</span><span id="line-106"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#word16RepDataConTy"><span class="hs-identifier">word16RepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#word8RepDataConTy"><span class="hs-identifier">word8RepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#word32RepDataConTy"><span class="hs-identifier">word32RepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#word64RepDataConTy"><span class="hs-identifier">word64RepDataConTy</span></a></span><span>
</span><span id="line-107"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#addrRepDataConTy"><span class="hs-identifier">addrRepDataConTy</span></a></span><span>
</span><span id="line-108"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#floatRepDataConTy"><span class="hs-identifier">floatRepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#doubleRepDataConTy"><span class="hs-identifier">doubleRepDataConTy</span></a></span><span>
</span><span id="line-109"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#vec2DataConTy"><span class="hs-identifier">vec2DataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#vec4DataConTy"><span class="hs-identifier">vec4DataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#vec8DataConTy"><span class="hs-identifier">vec8DataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#vec16DataConTy"><span class="hs-identifier">vec16DataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#vec32DataConTy"><span class="hs-identifier">vec32DataConTy</span></a></span><span>
</span><span id="line-110"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#vec64DataConTy"><span class="hs-identifier">vec64DataConTy</span></a></span><span>
</span><span id="line-111"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#int8ElemRepDataConTy"><span class="hs-identifier">int8ElemRepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#int16ElemRepDataConTy"><span class="hs-identifier">int16ElemRepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#int32ElemRepDataConTy"><span class="hs-identifier">int32ElemRepDataConTy</span></a></span><span>
</span><span id="line-112"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#int64ElemRepDataConTy"><span class="hs-identifier">int64ElemRepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#word8ElemRepDataConTy"><span class="hs-identifier">word8ElemRepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#word16ElemRepDataConTy"><span class="hs-identifier">word16ElemRepDataConTy</span></a></span><span>
</span><span id="line-113"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#word32ElemRepDataConTy"><span class="hs-identifier">word32ElemRepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#word64ElemRepDataConTy"><span class="hs-identifier">word64ElemRepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#floatElemRepDataConTy"><span class="hs-identifier">floatElemRepDataConTy</span></a></span><span>
</span><span id="line-114"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#doubleElemRepDataConTy"><span class="hs-identifier">doubleElemRepDataConTy</span></a></span><span>
</span><span id="line-115"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#mkPromotedListTy"><span class="hs-identifier">mkPromotedListTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#multiplicityTy"><span class="hs-identifier">multiplicityTy</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-116"></span><span>
</span><span id="line-117"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Var.html"><span class="hs-identifier">GHC.Types.Var</span></a></span><span>    </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#TyVar"><span class="hs-identifier">TyVar</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#mkTyVar"><span class="hs-identifier">mkTyVar</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-118"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Name.html"><span class="hs-identifier">GHC.Types.Name</span></a></span><span>
</span><span id="line-119"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html"><span class="hs-identifier">GHC.Core.TyCon</span></a></span><span>
</span><span id="line-120"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.SrcLoc.html"><span class="hs-identifier">GHC.Types.SrcLoc</span></a></span><span>
</span><span id="line-121"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Unique.html"><span class="hs-identifier">GHC.Types.Unique</span></a></span><span>
</span><span id="line-122"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Builtin.Names.html"><span class="hs-identifier">GHC.Builtin.Names</span></a></span><span>
</span><span id="line-123"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Data.FastString.html"><span class="hs-identifier">GHC.Data.FastString</span></a></span><span>
</span><span id="line-124"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html"><span class="hs-identifier">GHC.Utils.Outputable</span></a></span><span>
</span><span id="line-125"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html"><span class="hs-identifier">GHC.Core.TyCo.Rep</span></a></span><span> </span><span class="hs-comment">-- Doesn't need special access, but this is easier to avoid</span><span>
</span><span id="line-126"></span><span>                         </span><span class="hs-comment">-- import loops which show up if you import Type instead</span><span>
</span><span id="line-127"></span><span>
</span><span id="line-128"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Data.Char.html#"><span class="hs-identifier">Data.Char</span></a></span><span>
</span><span id="line-129"></span><span>
</span><span id="line-130"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
\subsection{Primitive type constructors}
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-137"></span><span>
</span><span id="line-138"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#primTyCons"><span class="hs-identifier hs-type">primTyCons</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-139"></span><span id="primTyCons"><span class="annot"><span class="annottext">primTyCons :: [TyCon]
</span><a href="GHC.Builtin.Types.Prim.html#primTyCons"><span class="hs-identifier hs-var hs-var">primTyCons</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[TyCon]
</span><a href="GHC.Builtin.Types.Prim.html#unexposedPrimTyCons"><span class="hs-identifier hs-var">unexposedPrimTyCons</span></a></span><span> </span><span class="annot"><span class="annottext">[TyCon] -&gt; [TyCon] -&gt; [TyCon]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">[TyCon]
</span><a href="GHC.Builtin.Types.Prim.html#exposedPrimTyCons"><span class="hs-identifier hs-var">exposedPrimTyCons</span></a></span><span>
</span><span id="line-140"></span><span>
</span><span id="line-141"></span><span class="hs-comment">-- | Primitive 'TyCon's that are defined in GHC.Prim but not exposed.</span><span>
</span><span id="line-142"></span><span class="hs-comment">-- It's important to keep these separate as we don't want users to be able to</span><span>
</span><span id="line-143"></span><span class="hs-comment">-- write them (see #15209) or see them in GHCi's @:browse@ output</span><span>
</span><span id="line-144"></span><span class="hs-comment">-- (see #12023).</span><span>
</span><span id="line-145"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#unexposedPrimTyCons"><span class="hs-identifier hs-type">unexposedPrimTyCons</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-146"></span><span id="unexposedPrimTyCons"><span class="annot"><span class="annottext">unexposedPrimTyCons :: [TyCon]
</span><a href="GHC.Builtin.Types.Prim.html#unexposedPrimTyCons"><span class="hs-identifier hs-var hs-var">unexposedPrimTyCons</span></a></span></span><span>
</span><span id="line-147"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#eqPrimTyCon"><span class="hs-identifier hs-var">eqPrimTyCon</span></a></span><span>
</span><span id="line-148"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#eqReprPrimTyCon"><span class="hs-identifier hs-var">eqReprPrimTyCon</span></a></span><span>
</span><span id="line-149"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#eqPhantPrimTyCon"><span class="hs-identifier hs-var">eqPhantPrimTyCon</span></a></span><span>
</span><span id="line-150"></span><span>    </span><span class="hs-special">]</span><span>
</span><span id="line-151"></span><span>
</span><span id="line-152"></span><span class="hs-comment">-- | Primitive 'TyCon's that are defined in, and exported from, GHC.Prim.</span><span>
</span><span id="line-153"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#exposedPrimTyCons"><span class="hs-identifier hs-type">exposedPrimTyCons</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-154"></span><span id="exposedPrimTyCons"><span class="annot"><span class="annottext">exposedPrimTyCons :: [TyCon]
</span><a href="GHC.Builtin.Types.Prim.html#exposedPrimTyCons"><span class="hs-identifier hs-var hs-var">exposedPrimTyCons</span></a></span></span><span>
</span><span id="line-155"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#addrPrimTyCon"><span class="hs-identifier hs-var">addrPrimTyCon</span></a></span><span>
</span><span id="line-156"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#arrayPrimTyCon"><span class="hs-identifier hs-var">arrayPrimTyCon</span></a></span><span>
</span><span id="line-157"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#byteArrayPrimTyCon"><span class="hs-identifier hs-var">byteArrayPrimTyCon</span></a></span><span>
</span><span id="line-158"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#arrayArrayPrimTyCon"><span class="hs-identifier hs-var">arrayArrayPrimTyCon</span></a></span><span>
</span><span id="line-159"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#smallArrayPrimTyCon"><span class="hs-identifier hs-var">smallArrayPrimTyCon</span></a></span><span>
</span><span id="line-160"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#charPrimTyCon"><span class="hs-identifier hs-var">charPrimTyCon</span></a></span><span>
</span><span id="line-161"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#doublePrimTyCon"><span class="hs-identifier hs-var">doublePrimTyCon</span></a></span><span>
</span><span id="line-162"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#floatPrimTyCon"><span class="hs-identifier hs-var">floatPrimTyCon</span></a></span><span>
</span><span id="line-163"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#intPrimTyCon"><span class="hs-identifier hs-var">intPrimTyCon</span></a></span><span>
</span><span id="line-164"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#int8PrimTyCon"><span class="hs-identifier hs-var">int8PrimTyCon</span></a></span><span>
</span><span id="line-165"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#int16PrimTyCon"><span class="hs-identifier hs-var">int16PrimTyCon</span></a></span><span>
</span><span id="line-166"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#int32PrimTyCon"><span class="hs-identifier hs-var">int32PrimTyCon</span></a></span><span>
</span><span id="line-167"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#int64PrimTyCon"><span class="hs-identifier hs-var">int64PrimTyCon</span></a></span><span>
</span><span id="line-168"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#bcoPrimTyCon"><span class="hs-identifier hs-var">bcoPrimTyCon</span></a></span><span>
</span><span id="line-169"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#weakPrimTyCon"><span class="hs-identifier hs-var">weakPrimTyCon</span></a></span><span>
</span><span id="line-170"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#mutableArrayPrimTyCon"><span class="hs-identifier hs-var">mutableArrayPrimTyCon</span></a></span><span>
</span><span id="line-171"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#mutableByteArrayPrimTyCon"><span class="hs-identifier hs-var">mutableByteArrayPrimTyCon</span></a></span><span>
</span><span id="line-172"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#mutableArrayArrayPrimTyCon"><span class="hs-identifier hs-var">mutableArrayArrayPrimTyCon</span></a></span><span>
</span><span id="line-173"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#smallMutableArrayPrimTyCon"><span class="hs-identifier hs-var">smallMutableArrayPrimTyCon</span></a></span><span>
</span><span id="line-174"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#mVarPrimTyCon"><span class="hs-identifier hs-var">mVarPrimTyCon</span></a></span><span>
</span><span id="line-175"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#ioPortPrimTyCon"><span class="hs-identifier hs-var">ioPortPrimTyCon</span></a></span><span>
</span><span id="line-176"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#tVarPrimTyCon"><span class="hs-identifier hs-var">tVarPrimTyCon</span></a></span><span>
</span><span id="line-177"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#mutVarPrimTyCon"><span class="hs-identifier hs-var">mutVarPrimTyCon</span></a></span><span>
</span><span id="line-178"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#realWorldTyCon"><span class="hs-identifier hs-var">realWorldTyCon</span></a></span><span>
</span><span id="line-179"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#stablePtrPrimTyCon"><span class="hs-identifier hs-var">stablePtrPrimTyCon</span></a></span><span>
</span><span id="line-180"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#stableNamePrimTyCon"><span class="hs-identifier hs-var">stableNamePrimTyCon</span></a></span><span>
</span><span id="line-181"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#compactPrimTyCon"><span class="hs-identifier hs-var">compactPrimTyCon</span></a></span><span>
</span><span id="line-182"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#statePrimTyCon"><span class="hs-identifier hs-var">statePrimTyCon</span></a></span><span>
</span><span id="line-183"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#voidPrimTyCon"><span class="hs-identifier hs-var">voidPrimTyCon</span></a></span><span>
</span><span id="line-184"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#proxyPrimTyCon"><span class="hs-identifier hs-var">proxyPrimTyCon</span></a></span><span>
</span><span id="line-185"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#threadIdPrimTyCon"><span class="hs-identifier hs-var">threadIdPrimTyCon</span></a></span><span>
</span><span id="line-186"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#wordPrimTyCon"><span class="hs-identifier hs-var">wordPrimTyCon</span></a></span><span>
</span><span id="line-187"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#word8PrimTyCon"><span class="hs-identifier hs-var">word8PrimTyCon</span></a></span><span>
</span><span id="line-188"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#word16PrimTyCon"><span class="hs-identifier hs-var">word16PrimTyCon</span></a></span><span>
</span><span id="line-189"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#word32PrimTyCon"><span class="hs-identifier hs-var">word32PrimTyCon</span></a></span><span>
</span><span id="line-190"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#word64PrimTyCon"><span class="hs-identifier hs-var">word64PrimTyCon</span></a></span><span>
</span><span id="line-191"></span><span>
</span><span id="line-192"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#tYPETyCon"><span class="hs-identifier hs-var">tYPETyCon</span></a></span><span class="hs-cpp">

#include &quot;primop-vector-tycons.hs-incl&quot;
</span><span>    </span><span class="hs-special">]</span><span>
</span><span id="line-196"></span><span>
</span><span id="line-197"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-type">mkPrimTc</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Data.FastString.html#FastString"><span class="hs-identifier hs-type">FastString</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Unique.html#Unique"><span class="hs-identifier hs-type">Unique</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-198"></span><span id="mkPrimTc"><span class="annot"><span class="annottext">mkPrimTc :: FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var hs-var">mkPrimTc</span></a></span></span><span> </span><span id="local-6989586621680832217"><span class="annot"><span class="annottext">FastString
</span><a href="#local-6989586621680832217"><span class="hs-identifier hs-var">fs</span></a></span></span><span> </span><span id="local-6989586621680832216"><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621680832216"><span class="hs-identifier hs-var">unique</span></a></span></span><span> </span><span id="local-6989586621680832215"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680832215"><span class="hs-identifier hs-var">tycon</span></a></span></span><span>
</span><span id="line-199"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Module -&gt; OccName -&gt; Unique -&gt; TyThing -&gt; BuiltInSyntax -&gt; Name
</span><a href="GHC.Types.Name.html#mkWiredInName"><span class="hs-identifier hs-var">mkWiredInName</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_PRIM"><span class="hs-identifier hs-var">gHC_PRIM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">FastString -&gt; OccName
</span><a href="GHC.Types.Name.Occurrence.html#mkTcOccFS"><span class="hs-identifier hs-var">mkTcOccFS</span></a></span><span> </span><span class="annot"><span class="annottext">FastString
</span><a href="#local-6989586621680832217"><span class="hs-identifier hs-var">fs</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-200"></span><span>                  </span><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621680832216"><span class="hs-identifier hs-var">unique</span></a></span><span>
</span><span id="line-201"></span><span>                  </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon -&gt; TyThing
</span><a href="GHC.Core.TyCo.Rep.html#ATyCon"><span class="hs-identifier hs-var">ATyCon</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680832215"><span class="hs-identifier hs-var">tycon</span></a></span><span class="hs-special">)</span><span>        </span><span class="hs-comment">-- Relevant TyCon</span><span>
</span><span id="line-202"></span><span>                  </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span>
</span><span id="line-203"></span><span>
</span><span id="line-204"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkBuiltInPrimTc"><span class="hs-identifier hs-type">mkBuiltInPrimTc</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Data.FastString.html#FastString"><span class="hs-identifier hs-type">FastString</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Unique.html#Unique"><span class="hs-identifier hs-type">Unique</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-205"></span><span id="mkBuiltInPrimTc"><span class="annot"><span class="annottext">mkBuiltInPrimTc :: FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkBuiltInPrimTc"><span class="hs-identifier hs-var hs-var">mkBuiltInPrimTc</span></a></span></span><span> </span><span id="local-6989586621680832208"><span class="annot"><span class="annottext">FastString
</span><a href="#local-6989586621680832208"><span class="hs-identifier hs-var">fs</span></a></span></span><span> </span><span id="local-6989586621680832207"><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621680832207"><span class="hs-identifier hs-var">unique</span></a></span></span><span> </span><span id="local-6989586621680832206"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680832206"><span class="hs-identifier hs-var">tycon</span></a></span></span><span>
</span><span id="line-206"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Module -&gt; OccName -&gt; Unique -&gt; TyThing -&gt; BuiltInSyntax -&gt; Name
</span><a href="GHC.Types.Name.html#mkWiredInName"><span class="hs-identifier hs-var">mkWiredInName</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_PRIM"><span class="hs-identifier hs-var">gHC_PRIM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">FastString -&gt; OccName
</span><a href="GHC.Types.Name.Occurrence.html#mkTcOccFS"><span class="hs-identifier hs-var">mkTcOccFS</span></a></span><span> </span><span class="annot"><span class="annottext">FastString
</span><a href="#local-6989586621680832208"><span class="hs-identifier hs-var">fs</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-207"></span><span>                  </span><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621680832207"><span class="hs-identifier hs-var">unique</span></a></span><span>
</span><span id="line-208"></span><span>                  </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon -&gt; TyThing
</span><a href="GHC.Core.TyCo.Rep.html#ATyCon"><span class="hs-identifier hs-var">ATyCon</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680832206"><span class="hs-identifier hs-var">tycon</span></a></span><span class="hs-special">)</span><span>        </span><span class="hs-comment">-- Relevant TyCon</span><span>
</span><span id="line-209"></span><span>                  </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#BuiltInSyntax"><span class="hs-identifier hs-var">BuiltInSyntax</span></a></span><span>
</span><span id="line-210"></span><span>
</span><span id="line-211"></span><span>
</span><span id="line-212"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#charPrimTyConName"><span class="hs-identifier hs-type">charPrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#intPrimTyConName"><span class="hs-identifier hs-type">intPrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#int8PrimTyConName"><span class="hs-identifier hs-type">int8PrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#int16PrimTyConName"><span class="hs-identifier hs-type">int16PrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#int32PrimTyConName"><span class="hs-identifier hs-type">int32PrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#int64PrimTyConName"><span class="hs-identifier hs-type">int64PrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#wordPrimTyConName"><span class="hs-identifier hs-type">wordPrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#word32PrimTyConName"><span class="hs-identifier hs-type">word32PrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#word8PrimTyConName"><span class="hs-identifier hs-type">word8PrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#word16PrimTyConName"><span class="hs-identifier hs-type">word16PrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#word64PrimTyConName"><span class="hs-identifier hs-type">word64PrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#addrPrimTyConName"><span class="hs-identifier hs-type">addrPrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#floatPrimTyConName"><span class="hs-identifier hs-type">floatPrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#doublePrimTyConName"><span class="hs-identifier hs-type">doublePrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#statePrimTyConName"><span class="hs-identifier hs-type">statePrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#proxyPrimTyConName"><span class="hs-identifier hs-type">proxyPrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#realWorldTyConName"><span class="hs-identifier hs-type">realWorldTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#arrayPrimTyConName"><span class="hs-identifier hs-type">arrayPrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#arrayArrayPrimTyConName"><span class="hs-identifier hs-type">arrayArrayPrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#smallArrayPrimTyConName"><span class="hs-identifier hs-type">smallArrayPrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#byteArrayPrimTyConName"><span class="hs-identifier hs-type">byteArrayPrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mutableArrayPrimTyConName"><span class="hs-identifier hs-type">mutableArrayPrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mutableByteArrayPrimTyConName"><span class="hs-identifier hs-type">mutableByteArrayPrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mutableArrayArrayPrimTyConName"><span class="hs-identifier hs-type">mutableArrayArrayPrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#smallMutableArrayPrimTyConName"><span class="hs-identifier hs-type">smallMutableArrayPrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mutVarPrimTyConName"><span class="hs-identifier hs-type">mutVarPrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mVarPrimTyConName"><span class="hs-identifier hs-type">mVarPrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#ioPortPrimTyConName"><span class="hs-identifier hs-type">ioPortPrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#tVarPrimTyConName"><span class="hs-identifier hs-type">tVarPrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#stablePtrPrimTyConName"><span class="hs-identifier hs-type">stablePtrPrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#stableNamePrimTyConName"><span class="hs-identifier hs-type">stableNamePrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#compactPrimTyConName"><span class="hs-identifier hs-type">compactPrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#bcoPrimTyConName"><span class="hs-identifier hs-type">bcoPrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#weakPrimTyConName"><span class="hs-identifier hs-type">weakPrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#threadIdPrimTyConName"><span class="hs-identifier hs-type">threadIdPrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#eqPrimTyConName"><span class="hs-identifier hs-type">eqPrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#eqReprPrimTyConName"><span class="hs-identifier hs-type">eqReprPrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#eqPhantPrimTyConName"><span class="hs-identifier hs-type">eqPhantPrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#voidPrimTyConName"><span class="hs-identifier hs-type">voidPrimTyConName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-213"></span><span id="charPrimTyConName"><span class="annot"><span class="annottext">charPrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#charPrimTyConName"><span class="hs-identifier hs-var hs-var">charPrimTyConName</span></a></span></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Char#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#charPrimTyConKey"><span class="hs-identifier hs-var">charPrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#charPrimTyCon"><span class="hs-identifier hs-var">charPrimTyCon</span></a></span><span>
</span><span id="line-214"></span><span id="intPrimTyConName"><span class="annot"><span class="annottext">intPrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#intPrimTyConName"><span class="hs-identifier hs-var hs-var">intPrimTyConName</span></a></span></span><span>              </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Int#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#intPrimTyConKey"><span class="hs-identifier hs-var">intPrimTyConKey</span></a></span><span>  </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#intPrimTyCon"><span class="hs-identifier hs-var">intPrimTyCon</span></a></span><span>
</span><span id="line-215"></span><span id="int8PrimTyConName"><span class="annot"><span class="annottext">int8PrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#int8PrimTyConName"><span class="hs-identifier hs-var hs-var">int8PrimTyConName</span></a></span></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Int8#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#int8PrimTyConKey"><span class="hs-identifier hs-var">int8PrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#int8PrimTyCon"><span class="hs-identifier hs-var">int8PrimTyCon</span></a></span><span>
</span><span id="line-216"></span><span id="int16PrimTyConName"><span class="annot"><span class="annottext">int16PrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#int16PrimTyConName"><span class="hs-identifier hs-var hs-var">int16PrimTyConName</span></a></span></span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Int16#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#int16PrimTyConKey"><span class="hs-identifier hs-var">int16PrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#int16PrimTyCon"><span class="hs-identifier hs-var">int16PrimTyCon</span></a></span><span>
</span><span id="line-217"></span><span id="int32PrimTyConName"><span class="annot"><span class="annottext">int32PrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#int32PrimTyConName"><span class="hs-identifier hs-var hs-var">int32PrimTyConName</span></a></span></span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Int32#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#int32PrimTyConKey"><span class="hs-identifier hs-var">int32PrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#int32PrimTyCon"><span class="hs-identifier hs-var">int32PrimTyCon</span></a></span><span>
</span><span id="line-218"></span><span id="int64PrimTyConName"><span class="annot"><span class="annottext">int64PrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#int64PrimTyConName"><span class="hs-identifier hs-var hs-var">int64PrimTyConName</span></a></span></span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Int64#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#int64PrimTyConKey"><span class="hs-identifier hs-var">int64PrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#int64PrimTyCon"><span class="hs-identifier hs-var">int64PrimTyCon</span></a></span><span>
</span><span id="line-219"></span><span id="wordPrimTyConName"><span class="annot"><span class="annottext">wordPrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#wordPrimTyConName"><span class="hs-identifier hs-var hs-var">wordPrimTyConName</span></a></span></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Word#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#wordPrimTyConKey"><span class="hs-identifier hs-var">wordPrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#wordPrimTyCon"><span class="hs-identifier hs-var">wordPrimTyCon</span></a></span><span>
</span><span id="line-220"></span><span id="word8PrimTyConName"><span class="annot"><span class="annottext">word8PrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#word8PrimTyConName"><span class="hs-identifier hs-var hs-var">word8PrimTyConName</span></a></span></span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Word8#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#word8PrimTyConKey"><span class="hs-identifier hs-var">word8PrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#word8PrimTyCon"><span class="hs-identifier hs-var">word8PrimTyCon</span></a></span><span>
</span><span id="line-221"></span><span id="word16PrimTyConName"><span class="annot"><span class="annottext">word16PrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#word16PrimTyConName"><span class="hs-identifier hs-var hs-var">word16PrimTyConName</span></a></span></span><span>           </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Word16#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#word16PrimTyConKey"><span class="hs-identifier hs-var">word16PrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#word16PrimTyCon"><span class="hs-identifier hs-var">word16PrimTyCon</span></a></span><span>
</span><span id="line-222"></span><span id="word32PrimTyConName"><span class="annot"><span class="annottext">word32PrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#word32PrimTyConName"><span class="hs-identifier hs-var hs-var">word32PrimTyConName</span></a></span></span><span>           </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Word32#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#word32PrimTyConKey"><span class="hs-identifier hs-var">word32PrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#word32PrimTyCon"><span class="hs-identifier hs-var">word32PrimTyCon</span></a></span><span>
</span><span id="line-223"></span><span id="word64PrimTyConName"><span class="annot"><span class="annottext">word64PrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#word64PrimTyConName"><span class="hs-identifier hs-var hs-var">word64PrimTyConName</span></a></span></span><span>           </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Word64#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#word64PrimTyConKey"><span class="hs-identifier hs-var">word64PrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#word64PrimTyCon"><span class="hs-identifier hs-var">word64PrimTyCon</span></a></span><span>
</span><span id="line-224"></span><span id="addrPrimTyConName"><span class="annot"><span class="annottext">addrPrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#addrPrimTyConName"><span class="hs-identifier hs-var hs-var">addrPrimTyConName</span></a></span></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Addr#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#addrPrimTyConKey"><span class="hs-identifier hs-var">addrPrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#addrPrimTyCon"><span class="hs-identifier hs-var">addrPrimTyCon</span></a></span><span>
</span><span id="line-225"></span><span id="floatPrimTyConName"><span class="annot"><span class="annottext">floatPrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#floatPrimTyConName"><span class="hs-identifier hs-var hs-var">floatPrimTyConName</span></a></span></span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Float#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#floatPrimTyConKey"><span class="hs-identifier hs-var">floatPrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#floatPrimTyCon"><span class="hs-identifier hs-var">floatPrimTyCon</span></a></span><span>
</span><span id="line-226"></span><span id="doublePrimTyConName"><span class="annot"><span class="annottext">doublePrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#doublePrimTyConName"><span class="hs-identifier hs-var hs-var">doublePrimTyConName</span></a></span></span><span>           </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Double#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#doublePrimTyConKey"><span class="hs-identifier hs-var">doublePrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#doublePrimTyCon"><span class="hs-identifier hs-var">doublePrimTyCon</span></a></span><span>
</span><span id="line-227"></span><span id="statePrimTyConName"><span class="annot"><span class="annottext">statePrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#statePrimTyConName"><span class="hs-identifier hs-var hs-var">statePrimTyConName</span></a></span></span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;State#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#statePrimTyConKey"><span class="hs-identifier hs-var">statePrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#statePrimTyCon"><span class="hs-identifier hs-var">statePrimTyCon</span></a></span><span>
</span><span id="line-228"></span><span id="voidPrimTyConName"><span class="annot"><span class="annottext">voidPrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#voidPrimTyConName"><span class="hs-identifier hs-var hs-var">voidPrimTyConName</span></a></span></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Void#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#voidPrimTyConKey"><span class="hs-identifier hs-var">voidPrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#voidPrimTyCon"><span class="hs-identifier hs-var">voidPrimTyCon</span></a></span><span>
</span><span id="line-229"></span><span id="proxyPrimTyConName"><span class="annot"><span class="annottext">proxyPrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#proxyPrimTyConName"><span class="hs-identifier hs-var hs-var">proxyPrimTyConName</span></a></span></span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Proxy#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#proxyPrimTyConKey"><span class="hs-identifier hs-var">proxyPrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#proxyPrimTyCon"><span class="hs-identifier hs-var">proxyPrimTyCon</span></a></span><span>
</span><span id="line-230"></span><span id="eqPrimTyConName"><span class="annot"><span class="annottext">eqPrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#eqPrimTyConName"><span class="hs-identifier hs-var hs-var">eqPrimTyConName</span></a></span></span><span>               </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;~#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#eqPrimTyConKey"><span class="hs-identifier hs-var">eqPrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#eqPrimTyCon"><span class="hs-identifier hs-var">eqPrimTyCon</span></a></span><span>
</span><span id="line-231"></span><span id="eqReprPrimTyConName"><span class="annot"><span class="annottext">eqReprPrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#eqReprPrimTyConName"><span class="hs-identifier hs-var hs-var">eqReprPrimTyConName</span></a></span></span><span>           </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkBuiltInPrimTc"><span class="hs-identifier hs-var">mkBuiltInPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;~R#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#eqReprPrimTyConKey"><span class="hs-identifier hs-var">eqReprPrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#eqReprPrimTyCon"><span class="hs-identifier hs-var">eqReprPrimTyCon</span></a></span><span>
</span><span id="line-232"></span><span id="eqPhantPrimTyConName"><span class="annot"><span class="annottext">eqPhantPrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#eqPhantPrimTyConName"><span class="hs-identifier hs-var hs-var">eqPhantPrimTyConName</span></a></span></span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkBuiltInPrimTc"><span class="hs-identifier hs-var">mkBuiltInPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;~P#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#eqPhantPrimTyConKey"><span class="hs-identifier hs-var">eqPhantPrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#eqPhantPrimTyCon"><span class="hs-identifier hs-var">eqPhantPrimTyCon</span></a></span><span>
</span><span id="line-233"></span><span id="realWorldTyConName"><span class="annot"><span class="annottext">realWorldTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#realWorldTyConName"><span class="hs-identifier hs-var hs-var">realWorldTyConName</span></a></span></span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;RealWorld&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#realWorldTyConKey"><span class="hs-identifier hs-var">realWorldTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#realWorldTyCon"><span class="hs-identifier hs-var">realWorldTyCon</span></a></span><span>
</span><span id="line-234"></span><span id="arrayPrimTyConName"><span class="annot"><span class="annottext">arrayPrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#arrayPrimTyConName"><span class="hs-identifier hs-var hs-var">arrayPrimTyConName</span></a></span></span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Array#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#arrayPrimTyConKey"><span class="hs-identifier hs-var">arrayPrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#arrayPrimTyCon"><span class="hs-identifier hs-var">arrayPrimTyCon</span></a></span><span>
</span><span id="line-235"></span><span id="byteArrayPrimTyConName"><span class="annot"><span class="annottext">byteArrayPrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#byteArrayPrimTyConName"><span class="hs-identifier hs-var hs-var">byteArrayPrimTyConName</span></a></span></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;ByteArray#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#byteArrayPrimTyConKey"><span class="hs-identifier hs-var">byteArrayPrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#byteArrayPrimTyCon"><span class="hs-identifier hs-var">byteArrayPrimTyCon</span></a></span><span>
</span><span id="line-236"></span><span id="arrayArrayPrimTyConName"><span class="annot"><span class="annottext">arrayArrayPrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#arrayArrayPrimTyConName"><span class="hs-identifier hs-var hs-var">arrayArrayPrimTyConName</span></a></span></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;ArrayArray#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#arrayArrayPrimTyConKey"><span class="hs-identifier hs-var">arrayArrayPrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#arrayArrayPrimTyCon"><span class="hs-identifier hs-var">arrayArrayPrimTyCon</span></a></span><span>
</span><span id="line-237"></span><span id="smallArrayPrimTyConName"><span class="annot"><span class="annottext">smallArrayPrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#smallArrayPrimTyConName"><span class="hs-identifier hs-var hs-var">smallArrayPrimTyConName</span></a></span></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;SmallArray#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#smallArrayPrimTyConKey"><span class="hs-identifier hs-var">smallArrayPrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#smallArrayPrimTyCon"><span class="hs-identifier hs-var">smallArrayPrimTyCon</span></a></span><span>
</span><span id="line-238"></span><span id="mutableArrayPrimTyConName"><span class="annot"><span class="annottext">mutableArrayPrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#mutableArrayPrimTyConName"><span class="hs-identifier hs-var hs-var">mutableArrayPrimTyConName</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;MutableArray#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#mutableArrayPrimTyConKey"><span class="hs-identifier hs-var">mutableArrayPrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#mutableArrayPrimTyCon"><span class="hs-identifier hs-var">mutableArrayPrimTyCon</span></a></span><span>
</span><span id="line-239"></span><span id="mutableByteArrayPrimTyConName"><span class="annot"><span class="annottext">mutableByteArrayPrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#mutableByteArrayPrimTyConName"><span class="hs-identifier hs-var hs-var">mutableByteArrayPrimTyConName</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;MutableByteArray#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#mutableByteArrayPrimTyConKey"><span class="hs-identifier hs-var">mutableByteArrayPrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#mutableByteArrayPrimTyCon"><span class="hs-identifier hs-var">mutableByteArrayPrimTyCon</span></a></span><span>
</span><span id="line-240"></span><span id="mutableArrayArrayPrimTyConName"><span class="annot"><span class="annottext">mutableArrayArrayPrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#mutableArrayArrayPrimTyConName"><span class="hs-identifier hs-var hs-var">mutableArrayArrayPrimTyConName</span></a></span></span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;MutableArrayArray#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#mutableArrayArrayPrimTyConKey"><span class="hs-identifier hs-var">mutableArrayArrayPrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#mutableArrayArrayPrimTyCon"><span class="hs-identifier hs-var">mutableArrayArrayPrimTyCon</span></a></span><span>
</span><span id="line-241"></span><span id="smallMutableArrayPrimTyConName"><span class="annot"><span class="annottext">smallMutableArrayPrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#smallMutableArrayPrimTyConName"><span class="hs-identifier hs-var hs-var">smallMutableArrayPrimTyConName</span></a></span></span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;SmallMutableArray#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#smallMutableArrayPrimTyConKey"><span class="hs-identifier hs-var">smallMutableArrayPrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#smallMutableArrayPrimTyCon"><span class="hs-identifier hs-var">smallMutableArrayPrimTyCon</span></a></span><span>
</span><span id="line-242"></span><span id="mutVarPrimTyConName"><span class="annot"><span class="annottext">mutVarPrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#mutVarPrimTyConName"><span class="hs-identifier hs-var hs-var">mutVarPrimTyConName</span></a></span></span><span>           </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;MutVar#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#mutVarPrimTyConKey"><span class="hs-identifier hs-var">mutVarPrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#mutVarPrimTyCon"><span class="hs-identifier hs-var">mutVarPrimTyCon</span></a></span><span>
</span><span id="line-243"></span><span id="ioPortPrimTyConName"><span class="annot"><span class="annottext">ioPortPrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#ioPortPrimTyConName"><span class="hs-identifier hs-var hs-var">ioPortPrimTyConName</span></a></span></span><span>           </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;IOPort#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#ioPortPrimTyConKey"><span class="hs-identifier hs-var">ioPortPrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#ioPortPrimTyCon"><span class="hs-identifier hs-var">ioPortPrimTyCon</span></a></span><span>
</span><span id="line-244"></span><span id="mVarPrimTyConName"><span class="annot"><span class="annottext">mVarPrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#mVarPrimTyConName"><span class="hs-identifier hs-var hs-var">mVarPrimTyConName</span></a></span></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;MVar#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#mVarPrimTyConKey"><span class="hs-identifier hs-var">mVarPrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#mVarPrimTyCon"><span class="hs-identifier hs-var">mVarPrimTyCon</span></a></span><span>
</span><span id="line-245"></span><span id="tVarPrimTyConName"><span class="annot"><span class="annottext">tVarPrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#tVarPrimTyConName"><span class="hs-identifier hs-var hs-var">tVarPrimTyConName</span></a></span></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;TVar#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#tVarPrimTyConKey"><span class="hs-identifier hs-var">tVarPrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#tVarPrimTyCon"><span class="hs-identifier hs-var">tVarPrimTyCon</span></a></span><span>
</span><span id="line-246"></span><span id="stablePtrPrimTyConName"><span class="annot"><span class="annottext">stablePtrPrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#stablePtrPrimTyConName"><span class="hs-identifier hs-var hs-var">stablePtrPrimTyConName</span></a></span></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;StablePtr#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#stablePtrPrimTyConKey"><span class="hs-identifier hs-var">stablePtrPrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#stablePtrPrimTyCon"><span class="hs-identifier hs-var">stablePtrPrimTyCon</span></a></span><span>
</span><span id="line-247"></span><span id="stableNamePrimTyConName"><span class="annot"><span class="annottext">stableNamePrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#stableNamePrimTyConName"><span class="hs-identifier hs-var hs-var">stableNamePrimTyConName</span></a></span></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;StableName#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#stableNamePrimTyConKey"><span class="hs-identifier hs-var">stableNamePrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#stableNamePrimTyCon"><span class="hs-identifier hs-var">stableNamePrimTyCon</span></a></span><span>
</span><span id="line-248"></span><span id="compactPrimTyConName"><span class="annot"><span class="annottext">compactPrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#compactPrimTyConName"><span class="hs-identifier hs-var hs-var">compactPrimTyConName</span></a></span></span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Compact#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#compactPrimTyConKey"><span class="hs-identifier hs-var">compactPrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#compactPrimTyCon"><span class="hs-identifier hs-var">compactPrimTyCon</span></a></span><span>
</span><span id="line-249"></span><span id="bcoPrimTyConName"><span class="annot"><span class="annottext">bcoPrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#bcoPrimTyConName"><span class="hs-identifier hs-var hs-var">bcoPrimTyConName</span></a></span></span><span>              </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;BCO&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#bcoPrimTyConKey"><span class="hs-identifier hs-var">bcoPrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#bcoPrimTyCon"><span class="hs-identifier hs-var">bcoPrimTyCon</span></a></span><span>
</span><span id="line-250"></span><span id="weakPrimTyConName"><span class="annot"><span class="annottext">weakPrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#weakPrimTyConName"><span class="hs-identifier hs-var hs-var">weakPrimTyConName</span></a></span></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Weak#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#weakPrimTyConKey"><span class="hs-identifier hs-var">weakPrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#weakPrimTyCon"><span class="hs-identifier hs-var">weakPrimTyCon</span></a></span><span>
</span><span id="line-251"></span><span id="threadIdPrimTyConName"><span class="annot"><span class="annottext">threadIdPrimTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#threadIdPrimTyConName"><span class="hs-identifier hs-var hs-var">threadIdPrimTyConName</span></a></span></span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTc"><span class="hs-identifier hs-var">mkPrimTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;ThreadId#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#threadIdPrimTyConKey"><span class="hs-identifier hs-var">threadIdPrimTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#threadIdPrimTyCon"><span class="hs-identifier hs-var">threadIdPrimTyCon</span></a></span><span>
</span><span id="line-252"></span><span>
</span><span id="line-253"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
\subsection{Support code}
*                                                                      *
************************************************************************

alphaTyVars is a list of type variables for use in templates:
        [&quot;a&quot;, &quot;b&quot;, ..., &quot;z&quot;, &quot;t1&quot;, &quot;t2&quot;, ... ]
-}</span><span>
</span><span id="line-263"></span><span>
</span><span id="line-264"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkTemplateKindVar"><span class="hs-identifier hs-type">mkTemplateKindVar</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Kind"><span class="hs-identifier hs-type">Kind</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#TyVar"><span class="hs-identifier hs-type">TyVar</span></a></span><span>
</span><span id="line-265"></span><span id="mkTemplateKindVar"><span class="annot"><span class="annottext">mkTemplateKindVar :: Type -&gt; TyVar
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateKindVar"><span class="hs-identifier hs-var hs-var">mkTemplateKindVar</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Type -&gt; TyVar
</span><a href="GHC.Types.Var.html#mkTyVar"><span class="hs-identifier hs-var">mkTyVar</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int -&gt; String -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mk_tv_name"><span class="hs-identifier hs-var">mk_tv_name</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;k&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-266"></span><span>
</span><span id="line-267"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkTemplateKindVars"><span class="hs-identifier hs-type">mkTemplateKindVars</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Kind"><span class="hs-identifier hs-type">Kind</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#TyVar"><span class="hs-identifier hs-type">TyVar</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-268"></span><span class="hs-comment">-- k0  with unique (mkAlphaTyVarUnique 0)</span><span>
</span><span id="line-269"></span><span class="hs-comment">-- k1  with unique (mkAlphaTyVarUnique 1)</span><span>
</span><span id="line-270"></span><span class="hs-comment">-- ... etc</span><span>
</span><span id="line-271"></span><span id="mkTemplateKindVars"><span class="annot"><span class="annottext">mkTemplateKindVars :: [Type] -&gt; [TyVar]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateKindVars"><span class="hs-identifier hs-var hs-var">mkTemplateKindVars</span></a></span></span><span> </span><span class="hs-special">[</span><span id="local-6989586621680832137"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680832137"><span class="hs-identifier hs-var">kind</span></a></span></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type -&gt; TyVar
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateKindVar"><span class="hs-identifier hs-var">mkTemplateKindVar</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680832137"><span class="hs-identifier hs-var">kind</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-272"></span><span>  </span><span class="hs-comment">-- Special case for one kind: just &quot;k&quot;</span><span>
</span><span id="line-273"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkTemplateKindVars"><span class="hs-identifier hs-var">mkTemplateKindVars</span></a></span><span> </span><span id="local-6989586621680832136"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680832136"><span class="hs-identifier hs-var">kinds</span></a></span></span><span>
</span><span id="line-274"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Type -&gt; TyVar
</span><a href="GHC.Types.Var.html#mkTyVar"><span class="hs-identifier hs-var">mkTyVar</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int -&gt; String -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mk_tv_name"><span class="hs-identifier hs-var">mk_tv_name</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680832135"><span class="hs-identifier hs-var">u</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'k'</span></span><span> </span><span class="annot"><span class="annottext">Char -&gt; String -&gt; String
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">Int -&gt; String
forall a. Show a =&gt; a -&gt; String
</span><a href="../../base/src/GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680832135"><span class="hs-identifier hs-var">u</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680832133"><span class="hs-identifier hs-var">kind</span></a></span><span>
</span><span id="line-275"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span class="hs-special">(</span><span id="local-6989586621680832133"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680832133"><span class="hs-identifier hs-var">kind</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680832135"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680832135"><span class="hs-identifier hs-var">u</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680832136"><span class="hs-identifier hs-var">kinds</span></a></span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; [Int] -&gt; [(Type, Int)]
forall a b. [a] -&gt; [b] -&gt; [(a, b)]
</span><a href="../../base/src/GHC.List.html#zip"><span class="hs-operator hs-var">`zip`</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span class="hs-glyph">..</span><span class="hs-special">]</span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-276"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mk_tv_name"><span class="hs-identifier hs-type">mk_tv_name</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-277"></span><span id="mk_tv_name"><span class="annot"><span class="annottext">mk_tv_name :: Int -&gt; String -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mk_tv_name"><span class="hs-identifier hs-var hs-var">mk_tv_name</span></a></span></span><span> </span><span id="local-6989586621680832132"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680832132"><span class="hs-identifier hs-var">u</span></a></span></span><span> </span><span id="local-6989586621680832131"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621680832131"><span class="hs-identifier hs-var">s</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Unique -&gt; OccName -&gt; SrcSpan -&gt; Name
</span><a href="GHC.Types.Name.html#mkInternalName"><span class="hs-identifier hs-var">mkInternalName</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int -&gt; Unique
</span><a href="GHC.Types.Unique.html#mkAlphaTyVarUnique"><span class="hs-identifier hs-var">mkAlphaTyVarUnique</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680832132"><span class="hs-identifier hs-var">u</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-278"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">FastString -&gt; OccName
</span><a href="GHC.Types.Name.Occurrence.html#mkTyVarOccFS"><span class="hs-identifier hs-var">mkTyVarOccFS</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#mkFastString"><span class="hs-identifier hs-var">mkFastString</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621680832131"><span class="hs-identifier hs-var">s</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-279"></span><span>                                </span><span class="annot"><span class="annottext">SrcSpan
</span><a href="GHC.Types.SrcLoc.html#noSrcSpan"><span class="hs-identifier hs-var">noSrcSpan</span></a></span><span>
</span><span id="line-280"></span><span>
</span><span id="line-281"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkTemplateTyVarsFrom"><span class="hs-identifier hs-type">mkTemplateTyVarsFrom</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Kind"><span class="hs-identifier hs-type">Kind</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#TyVar"><span class="hs-identifier hs-type">TyVar</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-282"></span><span class="hs-comment">-- a  with unique (mkAlphaTyVarUnique n)</span><span>
</span><span id="line-283"></span><span class="hs-comment">-- b  with unique (mkAlphaTyVarUnique n+1)</span><span>
</span><span id="line-284"></span><span class="hs-comment">-- ... etc</span><span>
</span><span id="line-285"></span><span class="hs-comment">-- Typically called as</span><span>
</span><span id="line-286"></span><span class="hs-comment">--   mkTemplateTyVarsFrom (length kv_bndrs) kinds</span><span>
</span><span id="line-287"></span><span class="hs-comment">-- where kv_bndrs are the kind-level binders of a TyCon</span><span>
</span><span id="line-288"></span><span id="mkTemplateTyVarsFrom"><span class="annot"><span class="annottext">mkTemplateTyVarsFrom :: Int -&gt; [Type] -&gt; [TyVar]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateTyVarsFrom"><span class="hs-identifier hs-var hs-var">mkTemplateTyVarsFrom</span></a></span></span><span> </span><span id="local-6989586621680832125"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680832125"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span id="local-6989586621680832124"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680832124"><span class="hs-identifier hs-var">kinds</span></a></span></span><span>
</span><span id="line-289"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Type -&gt; TyVar
</span><a href="GHC.Types.Var.html#mkTyVar"><span class="hs-identifier hs-var">mkTyVar</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680832123"><span class="hs-identifier hs-var">name</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680832122"><span class="hs-identifier hs-var">kind</span></a></span><span>
</span><span id="line-290"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span class="hs-special">(</span><span id="local-6989586621680832122"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680832122"><span class="hs-identifier hs-var">kind</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680832121"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680832121"><span class="hs-identifier hs-var">index</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; [Int] -&gt; [(Type, Int)]
forall a b. [a] -&gt; [b] -&gt; [(a, b)]
</span><a href="../../base/src/GHC.List.html#zip"><span class="hs-identifier hs-var">zip</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680832124"><span class="hs-identifier hs-var">kinds</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span class="hs-glyph">..</span><span class="hs-special">]</span><span class="hs-special">,</span><span>
</span><span id="line-291"></span><span>      </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621680832119"><span class="annot"><span class="annottext">ch_ord :: Int
</span><a href="#local-6989586621680832119"><span class="hs-identifier hs-var hs-var">ch_ord</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680832121"><span class="hs-identifier hs-var">index</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span> </span><span class="annot"><span class="annottext">Char -&gt; Int
</span><a href="../../base/src/GHC.Base.html#ord"><span class="hs-identifier hs-var">ord</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'a'</span></span><span>
</span><span id="line-292"></span><span>          </span><span id="local-6989586621680832113"><span class="annot"><span class="annottext">name_str :: String
</span><a href="#local-6989586621680832113"><span class="hs-identifier hs-var hs-var">name_str</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680832119"><span class="hs-identifier hs-var">ch_ord</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Bool
forall a. Ord a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">&lt;=</span></span><span> </span><span class="annot"><span class="annottext">Char -&gt; Int
</span><a href="../../base/src/GHC.Base.html#ord"><span class="hs-identifier hs-var">ord</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'z'</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Int -&gt; Char
</span><a href="../../base/src/GHC.Char.html#chr"><span class="hs-identifier hs-var">chr</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680832119"><span class="hs-identifier hs-var">ch_ord</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-293"></span><span>                   </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'t'</span></span><span class="annot"><span class="annottext">Char -&gt; String -&gt; String
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span class="annot"><span class="annottext">Int -&gt; String
forall a. Show a =&gt; a -&gt; String
</span><a href="../../base/src/GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680832121"><span class="hs-identifier hs-var">index</span></a></span><span>
</span><span id="line-294"></span><span>          </span><span id="local-6989586621680832123"><span class="annot"><span class="annottext">name :: Name
</span><a href="#local-6989586621680832123"><span class="hs-identifier hs-var hs-var">name</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int -&gt; String -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mk_tv_name"><span class="hs-identifier hs-var">mk_tv_name</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680832121"><span class="hs-identifier hs-var">index</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680832125"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621680832113"><span class="hs-identifier hs-var">name_str</span></a></span><span>
</span><span id="line-295"></span><span>    </span><span class="hs-special">]</span><span>
</span><span id="line-296"></span><span>
</span><span id="line-297"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkTemplateTyVars"><span class="hs-identifier hs-type">mkTemplateTyVars</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Kind"><span class="hs-identifier hs-type">Kind</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#TyVar"><span class="hs-identifier hs-type">TyVar</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-298"></span><span id="mkTemplateTyVars"><span class="annot"><span class="annottext">mkTemplateTyVars :: [Type] -&gt; [TyVar]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateTyVars"><span class="hs-identifier hs-var hs-var">mkTemplateTyVars</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int -&gt; [Type] -&gt; [TyVar]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateTyVarsFrom"><span class="hs-identifier hs-var">mkTemplateTyVarsFrom</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">1</span></span><span>
</span><span id="line-299"></span><span>
</span><span id="line-300"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkTemplateTyConBinders"><span class="hs-identifier hs-type">mkTemplateTyConBinders</span></a></span><span>
</span><span id="line-301"></span><span>    </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Kind"><span class="hs-identifier hs-type">Kind</span></a></span><span class="hs-special">]</span><span>                </span><span class="hs-comment">-- [k1, .., kn]   Kinds of kind-forall'd vars</span><span>
</span><span id="line-302"></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Kind"><span class="hs-identifier hs-type">Kind</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Kind"><span class="hs-identifier hs-type">Kind</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>    </span><span class="hs-comment">-- Arg is [kv1:k1, ..., kvn:kn]</span><span>
</span><span id="line-303"></span><span>                             </span><span class="hs-comment">--     same length as first arg</span><span>
</span><span id="line-304"></span><span>                             </span><span class="hs-comment">-- Result is anon arg kinds</span><span>
</span><span id="line-305"></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCon.html#TyConBinder"><span class="hs-identifier hs-type">TyConBinder</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-306"></span><span id="mkTemplateTyConBinders"><span class="annot"><span class="annottext">mkTemplateTyConBinders :: [Type] -&gt; ([Type] -&gt; [Type]) -&gt; [TyConBinder]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateTyConBinders"><span class="hs-identifier hs-var hs-var">mkTemplateTyConBinders</span></a></span></span><span> </span><span id="local-6989586621680832109"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680832109"><span class="hs-identifier hs-var">kind_var_kinds</span></a></span></span><span> </span><span id="local-6989586621680832108"><span class="annot"><span class="annottext">[Type] -&gt; [Type]
</span><a href="#local-6989586621680832108"><span class="hs-identifier hs-var">mk_anon_arg_kinds</span></a></span></span><span>
</span><span id="line-307"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[TyConBinder]
</span><a href="#local-6989586621680832107"><span class="hs-identifier hs-var">kv_bndrs</span></a></span><span> </span><span class="annot"><span class="annottext">[TyConBinder] -&gt; [TyConBinder] -&gt; [TyConBinder]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">[TyConBinder]
</span><a href="#local-6989586621680832106"><span class="hs-identifier hs-var">tv_bndrs</span></a></span><span>
</span><span id="line-308"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-309"></span><span>    </span><span id="local-6989586621680832107"><span class="annot"><span class="annottext">kv_bndrs :: [TyConBinder]
</span><a href="#local-6989586621680832107"><span class="hs-identifier hs-var hs-var">kv_bndrs</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; [TyConBinder]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateKindTyConBinders"><span class="hs-identifier hs-var">mkTemplateKindTyConBinders</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680832109"><span class="hs-identifier hs-var">kind_var_kinds</span></a></span><span>
</span><span id="line-310"></span><span>    </span><span id="local-6989586621680832105"><span class="annot"><span class="annottext">anon_kinds :: [Type]
</span><a href="#local-6989586621680832105"><span class="hs-identifier hs-var hs-var">anon_kinds</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; [Type]
</span><a href="#local-6989586621680832108"><span class="hs-identifier hs-var">mk_anon_arg_kinds</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[TyVar] -&gt; [Type]
</span><a href="GHC.Core.TyCo.Rep.html#mkTyVarTys"><span class="hs-identifier hs-var">mkTyVarTys</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[TyConBinder] -&gt; [TyVar]
forall tv argf. [VarBndr tv argf] -&gt; [tv]
</span><a href="GHC.Types.Var.html#binderVars"><span class="hs-identifier hs-var">binderVars</span></a></span><span> </span><span class="annot"><span class="annottext">[TyConBinder]
</span><a href="#local-6989586621680832107"><span class="hs-identifier hs-var">kv_bndrs</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-311"></span><span>    </span><span id="local-6989586621680832106"><span class="annot"><span class="annottext">tv_bndrs :: [TyConBinder]
</span><a href="#local-6989586621680832106"><span class="hs-identifier hs-var hs-var">tv_bndrs</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int -&gt; [Type] -&gt; [TyConBinder]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateAnonTyConBindersFrom"><span class="hs-identifier hs-var">mkTemplateAnonTyConBindersFrom</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[TyConBinder] -&gt; Int
forall (t :: * -&gt; *) a. Foldable t =&gt; t a -&gt; Int
</span><a href="../../base/src/Data.Foldable.html#length"><span class="hs-identifier hs-var">length</span></a></span><span> </span><span class="annot"><span class="annottext">[TyConBinder]
</span><a href="#local-6989586621680832107"><span class="hs-identifier hs-var">kv_bndrs</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680832105"><span class="hs-identifier hs-var">anon_kinds</span></a></span><span>
</span><span id="line-312"></span><span>
</span><span id="line-313"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkTemplateKiTyVars"><span class="hs-identifier hs-type">mkTemplateKiTyVars</span></a></span><span>
</span><span id="line-314"></span><span>    </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Kind"><span class="hs-identifier hs-type">Kind</span></a></span><span class="hs-special">]</span><span>                </span><span class="hs-comment">-- [k1, .., kn]   Kinds of kind-forall'd vars</span><span>
</span><span id="line-315"></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Kind"><span class="hs-identifier hs-type">Kind</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Kind"><span class="hs-identifier hs-type">Kind</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>    </span><span class="hs-comment">-- Arg is [kv1:k1, ..., kvn:kn]</span><span>
</span><span id="line-316"></span><span>                             </span><span class="hs-comment">--     same length as first arg</span><span>
</span><span id="line-317"></span><span>                             </span><span class="hs-comment">-- Result is anon arg kinds [ak1, .., akm]</span><span>
</span><span id="line-318"></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#TyVar"><span class="hs-identifier hs-type">TyVar</span></a></span><span class="hs-special">]</span><span>   </span><span class="hs-comment">-- [kv1:k1, ..., kvn:kn, av1:ak1, ..., avm:akm]</span><span>
</span><span id="line-319"></span><span class="hs-comment">-- Example: if you want the tyvars for</span><span>
</span><span id="line-320"></span><span class="hs-comment">--   forall (r:RuntimeRep) (a:TYPE r) (b:*). blah</span><span>
</span><span id="line-321"></span><span class="hs-comment">-- call mkTemplateKiTyVars [RuntimeRep] (\[r] -&gt; [TYPE r, *])</span><span>
</span><span id="line-322"></span><span id="mkTemplateKiTyVars"><span class="annot"><span class="annottext">mkTemplateKiTyVars :: [Type] -&gt; ([Type] -&gt; [Type]) -&gt; [TyVar]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateKiTyVars"><span class="hs-identifier hs-var hs-var">mkTemplateKiTyVars</span></a></span></span><span> </span><span id="local-6989586621680832098"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680832098"><span class="hs-identifier hs-var">kind_var_kinds</span></a></span></span><span> </span><span id="local-6989586621680832097"><span class="annot"><span class="annottext">[Type] -&gt; [Type]
</span><a href="#local-6989586621680832097"><span class="hs-identifier hs-var">mk_arg_kinds</span></a></span></span><span>
</span><span id="line-323"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="#local-6989586621680832096"><span class="hs-identifier hs-var">kv_bndrs</span></a></span><span> </span><span class="annot"><span class="annottext">[TyVar] -&gt; [TyVar] -&gt; [TyVar]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="#local-6989586621680832095"><span class="hs-identifier hs-var">tv_bndrs</span></a></span><span>
</span><span id="line-324"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-325"></span><span>    </span><span id="local-6989586621680832096"><span class="annot"><span class="annottext">kv_bndrs :: [TyVar]
</span><a href="#local-6989586621680832096"><span class="hs-identifier hs-var hs-var">kv_bndrs</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; [TyVar]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateKindVars"><span class="hs-identifier hs-var">mkTemplateKindVars</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680832098"><span class="hs-identifier hs-var">kind_var_kinds</span></a></span><span>
</span><span id="line-326"></span><span>    </span><span id="local-6989586621680832094"><span class="annot"><span class="annottext">anon_kinds :: [Type]
</span><a href="#local-6989586621680832094"><span class="hs-identifier hs-var hs-var">anon_kinds</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; [Type]
</span><a href="#local-6989586621680832097"><span class="hs-identifier hs-var">mk_arg_kinds</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[TyVar] -&gt; [Type]
</span><a href="GHC.Core.TyCo.Rep.html#mkTyVarTys"><span class="hs-identifier hs-var">mkTyVarTys</span></a></span><span> </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="#local-6989586621680832096"><span class="hs-identifier hs-var">kv_bndrs</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-327"></span><span>    </span><span id="local-6989586621680832095"><span class="annot"><span class="annottext">tv_bndrs :: [TyVar]
</span><a href="#local-6989586621680832095"><span class="hs-identifier hs-var hs-var">tv_bndrs</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int -&gt; [Type] -&gt; [TyVar]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateTyVarsFrom"><span class="hs-identifier hs-var">mkTemplateTyVarsFrom</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[TyVar] -&gt; Int
forall (t :: * -&gt; *) a. Foldable t =&gt; t a -&gt; Int
</span><a href="../../base/src/Data.Foldable.html#length"><span class="hs-identifier hs-var">length</span></a></span><span> </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="#local-6989586621680832096"><span class="hs-identifier hs-var">kv_bndrs</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680832094"><span class="hs-identifier hs-var">anon_kinds</span></a></span><span>
</span><span id="line-328"></span><span>
</span><span id="line-329"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkTemplateKiTyVar"><span class="hs-identifier hs-type">mkTemplateKiTyVar</span></a></span><span>
</span><span id="line-330"></span><span>    </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Kind"><span class="hs-identifier hs-type">Kind</span></a></span><span>                  </span><span class="hs-comment">-- [k1, .., kn]   Kind of kind-forall'd var</span><span>
</span><span id="line-331"></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Kind"><span class="hs-identifier hs-type">Kind</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Kind"><span class="hs-identifier hs-type">Kind</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>      </span><span class="hs-comment">-- Arg is kv1:k1</span><span>
</span><span id="line-332"></span><span>                             </span><span class="hs-comment">-- Result is anon arg kinds [ak1, .., akm]</span><span>
</span><span id="line-333"></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#TyVar"><span class="hs-identifier hs-type">TyVar</span></a></span><span class="hs-special">]</span><span>   </span><span class="hs-comment">-- [kv1:k1, ..., kvn:kn, av1:ak1, ..., avm:akm]</span><span>
</span><span id="line-334"></span><span class="hs-comment">-- Example: if you want the tyvars for</span><span>
</span><span id="line-335"></span><span class="hs-comment">--   forall (r:RuntimeRep) (a:TYPE r) (b:*). blah</span><span>
</span><span id="line-336"></span><span class="hs-comment">-- call mkTemplateKiTyVar RuntimeRep (\r -&gt; [TYPE r, *])</span><span>
</span><span id="line-337"></span><span id="mkTemplateKiTyVar"><span class="annot"><span class="annottext">mkTemplateKiTyVar :: Type -&gt; (Type -&gt; [Type]) -&gt; [TyVar]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateKiTyVar"><span class="hs-identifier hs-var hs-var">mkTemplateKiTyVar</span></a></span></span><span> </span><span id="local-6989586621680832092"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680832092"><span class="hs-identifier hs-var">kind</span></a></span></span><span> </span><span id="local-6989586621680832091"><span class="annot"><span class="annottext">Type -&gt; [Type]
</span><a href="#local-6989586621680832091"><span class="hs-identifier hs-var">mk_arg_kinds</span></a></span></span><span>
</span><span id="line-338"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyVar
</span><a href="#local-6989586621680832090"><span class="hs-identifier hs-var">kv_bndr</span></a></span><span> </span><span class="annot"><span class="annottext">TyVar -&gt; [TyVar] -&gt; [TyVar]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="#local-6989586621680832089"><span class="hs-identifier hs-var">tv_bndrs</span></a></span><span>
</span><span id="line-339"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-340"></span><span>    </span><span id="local-6989586621680832090"><span class="annot"><span class="annottext">kv_bndr :: TyVar
</span><a href="#local-6989586621680832090"><span class="hs-identifier hs-var hs-var">kv_bndr</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Type -&gt; TyVar
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateKindVar"><span class="hs-identifier hs-var">mkTemplateKindVar</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680832092"><span class="hs-identifier hs-var">kind</span></a></span><span>
</span><span id="line-341"></span><span>    </span><span id="local-6989586621680832088"><span class="annot"><span class="annottext">anon_kinds :: [Type]
</span><a href="#local-6989586621680832088"><span class="hs-identifier hs-var hs-var">anon_kinds</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Type -&gt; [Type]
</span><a href="#local-6989586621680832091"><span class="hs-identifier hs-var">mk_arg_kinds</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyVar -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyVarTy"><span class="hs-identifier hs-var">mkTyVarTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyVar
</span><a href="#local-6989586621680832090"><span class="hs-identifier hs-var">kv_bndr</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-342"></span><span>    </span><span id="local-6989586621680832089"><span class="annot"><span class="annottext">tv_bndrs :: [TyVar]
</span><a href="#local-6989586621680832089"><span class="hs-identifier hs-var hs-var">tv_bndrs</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int -&gt; [Type] -&gt; [TyVar]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateTyVarsFrom"><span class="hs-identifier hs-var">mkTemplateTyVarsFrom</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">1</span></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680832088"><span class="hs-identifier hs-var">anon_kinds</span></a></span><span>
</span><span id="line-343"></span><span>
</span><span id="line-344"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkTemplateKindTyConBinders"><span class="hs-identifier hs-type">mkTemplateKindTyConBinders</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Kind"><span class="hs-identifier hs-type">Kind</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCon.html#TyConBinder"><span class="hs-identifier hs-type">TyConBinder</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-345"></span><span class="hs-comment">-- Makes named, Specified binders</span><span>
</span><span id="line-346"></span><span id="mkTemplateKindTyConBinders"><span class="annot"><span class="annottext">mkTemplateKindTyConBinders :: [Type] -&gt; [TyConBinder]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateKindTyConBinders"><span class="hs-identifier hs-var hs-var">mkTemplateKindTyConBinders</span></a></span></span><span> </span><span id="local-6989586621680832086"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680832086"><span class="hs-identifier hs-var">kinds</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">ArgFlag -&gt; TyVar -&gt; TyConBinder
</span><a href="GHC.Core.TyCon.html#mkNamedTyConBinder"><span class="hs-identifier hs-var">mkNamedTyConBinder</span></a></span><span> </span><span class="annot"><span class="annottext">ArgFlag
</span><a href="GHC.Types.Var.html#Specified"><span class="hs-identifier hs-var">Specified</span></a></span><span> </span><span class="annot"><span class="annottext">TyVar
</span><a href="#local-6989586621680832083"><span class="hs-identifier hs-var">tv</span></a></span><span> </span><span class="hs-glyph">|</span><span> </span><span id="local-6989586621680832083"><span class="annot"><span class="annottext">TyVar
</span><a href="#local-6989586621680832083"><span class="hs-identifier hs-var">tv</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; [TyVar]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateKindVars"><span class="hs-identifier hs-var">mkTemplateKindVars</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680832086"><span class="hs-identifier hs-var">kinds</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-347"></span><span>
</span><span id="line-348"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkTemplateAnonTyConBinders"><span class="hs-identifier hs-type">mkTemplateAnonTyConBinders</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Kind"><span class="hs-identifier hs-type">Kind</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCon.html#TyConBinder"><span class="hs-identifier hs-type">TyConBinder</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-349"></span><span id="mkTemplateAnonTyConBinders"><span class="annot"><span class="annottext">mkTemplateAnonTyConBinders :: [Type] -&gt; [TyConBinder]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateAnonTyConBinders"><span class="hs-identifier hs-var hs-var">mkTemplateAnonTyConBinders</span></a></span></span><span> </span><span id="local-6989586621680832082"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680832082"><span class="hs-identifier hs-var">kinds</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">AnonArgFlag -&gt; [TyVar] -&gt; [TyConBinder]
</span><a href="GHC.Core.TyCon.html#mkAnonTyConBinders"><span class="hs-identifier hs-var">mkAnonTyConBinders</span></a></span><span> </span><span class="annot"><span class="annottext">AnonArgFlag
</span><a href="GHC.Types.Var.html#VisArg"><span class="hs-identifier hs-var">VisArg</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Type] -&gt; [TyVar]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateTyVars"><span class="hs-identifier hs-var">mkTemplateTyVars</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680832082"><span class="hs-identifier hs-var">kinds</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-350"></span><span>
</span><span id="line-351"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkTemplateAnonTyConBindersFrom"><span class="hs-identifier hs-type">mkTemplateAnonTyConBindersFrom</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Kind"><span class="hs-identifier hs-type">Kind</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCon.html#TyConBinder"><span class="hs-identifier hs-type">TyConBinder</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-352"></span><span id="mkTemplateAnonTyConBindersFrom"><span class="annot"><span class="annottext">mkTemplateAnonTyConBindersFrom :: Int -&gt; [Type] -&gt; [TyConBinder]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateAnonTyConBindersFrom"><span class="hs-identifier hs-var hs-var">mkTemplateAnonTyConBindersFrom</span></a></span></span><span> </span><span id="local-6989586621680832079"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680832079"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span id="local-6989586621680832078"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680832078"><span class="hs-identifier hs-var">kinds</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">AnonArgFlag -&gt; [TyVar] -&gt; [TyConBinder]
</span><a href="GHC.Core.TyCon.html#mkAnonTyConBinders"><span class="hs-identifier hs-var">mkAnonTyConBinders</span></a></span><span> </span><span class="annot"><span class="annottext">AnonArgFlag
</span><a href="GHC.Types.Var.html#VisArg"><span class="hs-identifier hs-var">VisArg</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int -&gt; [Type] -&gt; [TyVar]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateTyVarsFrom"><span class="hs-identifier hs-var">mkTemplateTyVarsFrom</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680832079"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680832078"><span class="hs-identifier hs-var">kinds</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-353"></span><span>
</span><span id="line-354"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#alphaTyVars"><span class="hs-identifier hs-type">alphaTyVars</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#TyVar"><span class="hs-identifier hs-type">TyVar</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-355"></span><span id="alphaTyVars"><span class="annot"><span class="annottext">alphaTyVars :: [TyVar]
</span><a href="GHC.Builtin.Types.Prim.html#alphaTyVars"><span class="hs-identifier hs-var hs-var">alphaTyVars</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; [TyVar]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateTyVars"><span class="hs-identifier hs-var">mkTemplateTyVars</span></a></span><span> </span><span class="annot"><span class="annottext">([Type] -&gt; [TyVar]) -&gt; [Type] -&gt; [TyVar]
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Type -&gt; [Type]
forall a. a -&gt; [a]
</span><a href="../../base/src/GHC.List.html#repeat"><span class="hs-identifier hs-var">repeat</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#liftedTypeKind"><span class="hs-identifier hs-var">liftedTypeKind</span></a></span><span>
</span><span id="line-356"></span><span>
</span><span id="line-357"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#alphaTyVar"><span class="hs-identifier hs-type">alphaTyVar</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#betaTyVar"><span class="hs-identifier hs-type">betaTyVar</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#gammaTyVar"><span class="hs-identifier hs-type">gammaTyVar</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#deltaTyVar"><span class="hs-identifier hs-type">deltaTyVar</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#TyVar"><span class="hs-identifier hs-type">TyVar</span></a></span><span>
</span><span id="line-358"></span><span class="hs-special">(</span><span id="alphaTyVar"><span class="annot"><span class="annottext">TyVar
</span><a href="GHC.Builtin.Types.Prim.html#alphaTyVar"><span class="hs-identifier hs-var">alphaTyVar</span></a></span></span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span id="betaTyVar"><span class="annot"><span class="annottext">TyVar
</span><a href="GHC.Builtin.Types.Prim.html#betaTyVar"><span class="hs-identifier hs-var">betaTyVar</span></a></span></span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span id="gammaTyVar"><span class="annot"><span class="annottext">TyVar
</span><a href="GHC.Builtin.Types.Prim.html#gammaTyVar"><span class="hs-identifier hs-var">gammaTyVar</span></a></span></span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span id="deltaTyVar"><span class="annot"><span class="annottext">TyVar
</span><a href="GHC.Builtin.Types.Prim.html#deltaTyVar"><span class="hs-identifier hs-var">deltaTyVar</span></a></span></span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span class="annot"><span class="annottext">[TyVar]
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="GHC.Builtin.Types.Prim.html#alphaTyVars"><span class="hs-identifier hs-var">alphaTyVars</span></a></span><span>
</span><span id="line-359"></span><span>
</span><span id="line-360"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#alphaTys"><span class="hs-identifier hs-type">alphaTys</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-361"></span><span id="alphaTys"><span class="annot"><span class="annottext">alphaTys :: [Type]
</span><a href="GHC.Builtin.Types.Prim.html#alphaTys"><span class="hs-identifier hs-var hs-var">alphaTys</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[TyVar] -&gt; [Type]
</span><a href="GHC.Core.TyCo.Rep.html#mkTyVarTys"><span class="hs-identifier hs-var">mkTyVarTys</span></a></span><span> </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="GHC.Builtin.Types.Prim.html#alphaTyVars"><span class="hs-identifier hs-var">alphaTyVars</span></a></span><span>
</span><span id="line-362"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#alphaTy"><span class="hs-identifier hs-type">alphaTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#betaTy"><span class="hs-identifier hs-type">betaTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#gammaTy"><span class="hs-identifier hs-type">gammaTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#deltaTy"><span class="hs-identifier hs-type">deltaTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-363"></span><span class="hs-special">(</span><span id="alphaTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.Prim.html#alphaTy"><span class="hs-identifier hs-var">alphaTy</span></a></span></span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span id="betaTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.Prim.html#betaTy"><span class="hs-identifier hs-var">betaTy</span></a></span></span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span id="gammaTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.Prim.html#gammaTy"><span class="hs-identifier hs-var">gammaTy</span></a></span></span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span id="deltaTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.Prim.html#deltaTy"><span class="hs-identifier hs-var">deltaTy</span></a></span></span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span class="annot"><span class="annottext">[Type]
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="GHC.Builtin.Types.Prim.html#alphaTys"><span class="hs-identifier hs-var">alphaTys</span></a></span><span>
</span><span id="line-364"></span><span>
</span><span id="line-365"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#alphaTyVarsUnliftedRep"><span class="hs-identifier hs-type">alphaTyVarsUnliftedRep</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#TyVar"><span class="hs-identifier hs-type">TyVar</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-366"></span><span id="alphaTyVarsUnliftedRep"><span class="annot"><span class="annottext">alphaTyVarsUnliftedRep :: [TyVar]
</span><a href="GHC.Builtin.Types.Prim.html#alphaTyVarsUnliftedRep"><span class="hs-identifier hs-var hs-var">alphaTyVarsUnliftedRep</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; [TyVar]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateTyVars"><span class="hs-identifier hs-var">mkTemplateTyVars</span></a></span><span> </span><span class="annot"><span class="annottext">([Type] -&gt; [TyVar]) -&gt; [Type] -&gt; [TyVar]
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Type -&gt; [Type]
forall a. a -&gt; [a]
</span><a href="../../base/src/GHC.List.html#repeat"><span class="hs-identifier hs-var">repeat</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Type -&gt; Type
</span><a href="GHC.Builtin.Types.Prim.html#tYPE"><span class="hs-identifier hs-var">tYPE</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#unliftedRepDataConTy"><span class="hs-identifier hs-var">unliftedRepDataConTy</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-367"></span><span>
</span><span id="line-368"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#alphaTyVarUnliftedRep"><span class="hs-identifier hs-type">alphaTyVarUnliftedRep</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#TyVar"><span class="hs-identifier hs-type">TyVar</span></a></span><span>
</span><span id="line-369"></span><span class="hs-special">(</span><span id="alphaTyVarUnliftedRep"><span class="annot"><span class="annottext">TyVar
</span><a href="GHC.Builtin.Types.Prim.html#alphaTyVarUnliftedRep"><span class="hs-identifier hs-var">alphaTyVarUnliftedRep</span></a></span></span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span class="annot"><span class="annottext">[TyVar]
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="GHC.Builtin.Types.Prim.html#alphaTyVarsUnliftedRep"><span class="hs-identifier hs-var">alphaTyVarsUnliftedRep</span></a></span><span>
</span><span id="line-370"></span><span>
</span><span id="line-371"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#alphaTysUnliftedRep"><span class="hs-identifier hs-type">alphaTysUnliftedRep</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-372"></span><span id="alphaTysUnliftedRep"><span class="annot"><span class="annottext">alphaTysUnliftedRep :: [Type]
</span><a href="GHC.Builtin.Types.Prim.html#alphaTysUnliftedRep"><span class="hs-identifier hs-var hs-var">alphaTysUnliftedRep</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[TyVar] -&gt; [Type]
</span><a href="GHC.Core.TyCo.Rep.html#mkTyVarTys"><span class="hs-identifier hs-var">mkTyVarTys</span></a></span><span> </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="GHC.Builtin.Types.Prim.html#alphaTyVarsUnliftedRep"><span class="hs-identifier hs-var">alphaTyVarsUnliftedRep</span></a></span><span>
</span><span id="line-373"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#alphaTyUnliftedRep"><span class="hs-identifier hs-type">alphaTyUnliftedRep</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-374"></span><span class="hs-special">(</span><span id="alphaTyUnliftedRep"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.Prim.html#alphaTyUnliftedRep"><span class="hs-identifier hs-var">alphaTyUnliftedRep</span></a></span></span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span class="annot"><span class="annottext">[Type]
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="GHC.Builtin.Types.Prim.html#alphaTysUnliftedRep"><span class="hs-identifier hs-var">alphaTysUnliftedRep</span></a></span><span>
</span><span id="line-375"></span><span>
</span><span id="line-376"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#runtimeRep1TyVar"><span class="hs-identifier hs-type">runtimeRep1TyVar</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#runtimeRep2TyVar"><span class="hs-identifier hs-type">runtimeRep2TyVar</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#TyVar"><span class="hs-identifier hs-type">TyVar</span></a></span><span>
</span><span id="line-377"></span><span class="hs-special">(</span><span id="runtimeRep1TyVar"><span class="annot"><span class="annottext">TyVar
</span><a href="GHC.Builtin.Types.Prim.html#runtimeRep1TyVar"><span class="hs-identifier hs-var">runtimeRep1TyVar</span></a></span></span><span> </span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span> </span><span id="runtimeRep2TyVar"><span class="annot"><span class="annottext">TyVar
</span><a href="GHC.Builtin.Types.Prim.html#runtimeRep2TyVar"><span class="hs-identifier hs-var">runtimeRep2TyVar</span></a></span></span><span> </span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span> </span><span class="annot"><span class="annottext">[TyVar]
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>
</span><span id="line-378"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int -&gt; [TyVar] -&gt; [TyVar]
forall a. Int -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.List.html#drop"><span class="hs-identifier hs-var">drop</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">16</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Type] -&gt; [TyVar]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateTyVars"><span class="hs-identifier hs-var">mkTemplateTyVars</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Type -&gt; [Type]
forall a. a -&gt; [a]
</span><a href="../../base/src/GHC.List.html#repeat"><span class="hs-identifier hs-var">repeat</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#runtimeRepTy"><span class="hs-identifier hs-var">runtimeRepTy</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>  </span><span class="hs-comment">-- selects 'q','r'</span><span>
</span><span id="line-379"></span><span>
</span><span id="line-380"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#runtimeRep1Ty"><span class="hs-identifier hs-type">runtimeRep1Ty</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#runtimeRep2Ty"><span class="hs-identifier hs-type">runtimeRep2Ty</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-381"></span><span id="runtimeRep1Ty"><span class="annot"><span class="annottext">runtimeRep1Ty :: Type
</span><a href="GHC.Builtin.Types.Prim.html#runtimeRep1Ty"><span class="hs-identifier hs-var hs-var">runtimeRep1Ty</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyVar -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyVarTy"><span class="hs-identifier hs-var">mkTyVarTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyVar
</span><a href="GHC.Builtin.Types.Prim.html#runtimeRep1TyVar"><span class="hs-identifier hs-var">runtimeRep1TyVar</span></a></span><span>
</span><span id="line-382"></span><span id="runtimeRep2Ty"><span class="annot"><span class="annottext">runtimeRep2Ty :: Type
</span><a href="GHC.Builtin.Types.Prim.html#runtimeRep2Ty"><span class="hs-identifier hs-var hs-var">runtimeRep2Ty</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyVar -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyVarTy"><span class="hs-identifier hs-var">mkTyVarTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyVar
</span><a href="GHC.Builtin.Types.Prim.html#runtimeRep2TyVar"><span class="hs-identifier hs-var">runtimeRep2TyVar</span></a></span><span>
</span><span id="line-383"></span><span>
</span><span id="line-384"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#openAlphaTyVar"><span class="hs-identifier hs-type">openAlphaTyVar</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#openBetaTyVar"><span class="hs-identifier hs-type">openBetaTyVar</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#TyVar"><span class="hs-identifier hs-type">TyVar</span></a></span><span>
</span><span id="line-385"></span><span class="hs-comment">-- alpha :: TYPE r1</span><span>
</span><span id="line-386"></span><span class="hs-comment">-- beta  :: TYPE r2</span><span>
</span><span id="line-387"></span><span class="hs-special">[</span><span id="openAlphaTyVar"><span class="annot"><span class="annottext">TyVar
</span><a href="GHC.Builtin.Types.Prim.html#openAlphaTyVar"><span class="hs-identifier hs-var">openAlphaTyVar</span></a></span></span><span class="hs-special">,</span><span id="openBetaTyVar"><span class="annot"><span class="annottext">TyVar
</span><a href="GHC.Builtin.Types.Prim.html#openBetaTyVar"><span class="hs-identifier hs-var">openBetaTyVar</span></a></span></span><span class="hs-special">]</span><span>
</span><span id="line-388"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; [TyVar]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateTyVars"><span class="hs-identifier hs-var">mkTemplateTyVars</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type -&gt; Type
</span><a href="GHC.Builtin.Types.Prim.html#tYPE"><span class="hs-identifier hs-var">tYPE</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.Prim.html#runtimeRep1Ty"><span class="hs-identifier hs-var">runtimeRep1Ty</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Type -&gt; Type
</span><a href="GHC.Builtin.Types.Prim.html#tYPE"><span class="hs-identifier hs-var">tYPE</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.Prim.html#runtimeRep2Ty"><span class="hs-identifier hs-var">runtimeRep2Ty</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-389"></span><span>
</span><span id="line-390"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#openAlphaTy"><span class="hs-identifier hs-type">openAlphaTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#openBetaTy"><span class="hs-identifier hs-type">openBetaTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-391"></span><span id="openAlphaTy"><span class="annot"><span class="annottext">openAlphaTy :: Type
</span><a href="GHC.Builtin.Types.Prim.html#openAlphaTy"><span class="hs-identifier hs-var hs-var">openAlphaTy</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyVar -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyVarTy"><span class="hs-identifier hs-var">mkTyVarTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyVar
</span><a href="GHC.Builtin.Types.Prim.html#openAlphaTyVar"><span class="hs-identifier hs-var">openAlphaTyVar</span></a></span><span>
</span><span id="line-392"></span><span id="openBetaTy"><span class="annot"><span class="annottext">openBetaTy :: Type
</span><a href="GHC.Builtin.Types.Prim.html#openBetaTy"><span class="hs-identifier hs-var hs-var">openBetaTy</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyVar -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyVarTy"><span class="hs-identifier hs-var">mkTyVarTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyVar
</span><a href="GHC.Builtin.Types.Prim.html#openBetaTyVar"><span class="hs-identifier hs-var">openBetaTyVar</span></a></span><span>
</span><span id="line-393"></span><span>
</span><span id="line-394"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#multiplicityTyVar"><span class="hs-identifier hs-type">multiplicityTyVar</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#TyVar"><span class="hs-identifier hs-type">TyVar</span></a></span><span>
</span><span id="line-395"></span><span id="multiplicityTyVar"><span class="annot"><span class="annottext">multiplicityTyVar :: TyVar
</span><a href="GHC.Builtin.Types.Prim.html#multiplicityTyVar"><span class="hs-identifier hs-var hs-var">multiplicityTyVar</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; [TyVar]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateTyVars"><span class="hs-identifier hs-var">mkTemplateTyVars</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Type -&gt; [Type]
forall a. a -&gt; [a]
</span><a href="../../base/src/GHC.List.html#repeat"><span class="hs-identifier hs-var">repeat</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#multiplicityTy"><span class="hs-identifier hs-var">multiplicityTy</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[TyVar] -&gt; Int -&gt; TyVar
forall a. [a] -&gt; Int -&gt; a
</span><a href="../../base/src/GHC.List.html#%21%21"><span class="hs-operator hs-var">!!</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">13</span></span><span>  </span><span class="hs-comment">-- selects 'n'</span><span>
</span><span id="line-396"></span><span>
</span><span id="line-397"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
                FunTyCon
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-404"></span><span>
</span><span id="line-405"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#funTyConName"><span class="hs-identifier hs-type">funTyConName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-406"></span><span id="funTyConName"><span class="annot"><span class="annottext">funTyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#funTyConName"><span class="hs-identifier hs-var hs-var">funTyConName</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTyConName"><span class="hs-identifier hs-var">mkPrimTyConName</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;FUN&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#funTyConKey"><span class="hs-identifier hs-var">funTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#funTyCon"><span class="hs-identifier hs-var">funTyCon</span></a></span><span>
</span><span id="line-407"></span><span>
</span><span id="line-408"></span><span class="hs-comment">-- | The @FUN@ type constructor.</span><span>
</span><span id="line-409"></span><span class="hs-comment">--</span><span>
</span><span id="line-410"></span><span class="hs-comment">-- @</span><span>
</span><span id="line-411"></span><span class="hs-comment">-- FUN :: forall {m :: Multiplicity} {rep1 :: RuntimeRep} {rep2 :: RuntimeRep}.</span><span>
</span><span id="line-412"></span><span class="hs-comment">--         TYPE rep1 -&gt; TYPE rep2 -&gt; *</span><span>
</span><span id="line-413"></span><span class="hs-comment">-- @</span><span>
</span><span id="line-414"></span><span class="hs-comment">--</span><span>
</span><span id="line-415"></span><span class="hs-comment">-- The runtime representations quantification is left inferred. This</span><span>
</span><span id="line-416"></span><span class="hs-comment">-- means they cannot be specified with @-XTypeApplications@.</span><span>
</span><span id="line-417"></span><span class="hs-comment">--</span><span>
</span><span id="line-418"></span><span class="hs-comment">-- This is a deliberate choice to allow future extensions to the</span><span>
</span><span id="line-419"></span><span class="hs-comment">-- function arrow. To allow visible application a type synonym can be</span><span>
</span><span id="line-420"></span><span class="hs-comment">-- defined:</span><span>
</span><span id="line-421"></span><span class="hs-comment">--</span><span>
</span><span id="line-422"></span><span class="hs-comment">-- @</span><span>
</span><span id="line-423"></span><span class="hs-comment">-- type Arr :: forall (rep1 :: RuntimeRep) (rep2 :: RuntimeRep).</span><span>
</span><span id="line-424"></span><span class="hs-comment">--             TYPE rep1 -&gt; TYPE rep2 -&gt; Type</span><span>
</span><span id="line-425"></span><span class="hs-comment">-- type Arr = FUN</span><span>
</span><span id="line-426"></span><span class="hs-comment">-- @</span><span>
</span><span id="line-427"></span><span class="hs-comment">--</span><span>
</span><span id="line-428"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#funTyCon"><span class="hs-identifier hs-type">funTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-429"></span><span id="funTyCon"><span class="annot"><span class="annottext">funTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#funTyCon"><span class="hs-identifier hs-var hs-var">funTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyConBinder] -&gt; Name -&gt; TyCon
</span><a href="GHC.Core.TyCon.html#mkFunTyCon"><span class="hs-identifier hs-var">mkFunTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#funTyConName"><span class="hs-identifier hs-var">funTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">[TyConBinder]
</span><a href="#local-6989586621680832072"><span class="hs-identifier hs-var">tc_bndrs</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680832071"><span class="hs-identifier hs-var">tc_rep_nm</span></a></span><span>
</span><span id="line-430"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-431"></span><span>    </span><span class="hs-comment">-- See also unrestrictedFunTyCon</span><span>
</span><span id="line-432"></span><span>    </span><span id="local-6989586621680832072"><span class="annot"><span class="annottext">tc_bndrs :: [TyConBinder]
</span><a href="#local-6989586621680832072"><span class="hs-identifier hs-var hs-var">tc_bndrs</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">ArgFlag -&gt; TyVar -&gt; TyConBinder
</span><a href="GHC.Core.TyCon.html#mkNamedTyConBinder"><span class="hs-identifier hs-var">mkNamedTyConBinder</span></a></span><span> </span><span class="annot"><span class="annottext">ArgFlag
</span><a href="GHC.Types.Var.html#Required"><span class="hs-identifier hs-var">Required</span></a></span><span> </span><span class="annot"><span class="annottext">TyVar
</span><a href="GHC.Builtin.Types.Prim.html#multiplicityTyVar"><span class="hs-identifier hs-var">multiplicityTyVar</span></a></span><span>
</span><span id="line-433"></span><span>               </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">ArgFlag -&gt; TyVar -&gt; TyConBinder
</span><a href="GHC.Core.TyCon.html#mkNamedTyConBinder"><span class="hs-identifier hs-var">mkNamedTyConBinder</span></a></span><span> </span><span class="annot"><span class="annottext">ArgFlag
</span><a href="GHC.Types.Var.html#Inferred"><span class="hs-identifier hs-var">Inferred</span></a></span><span> </span><span class="annot"><span class="annottext">TyVar
</span><a href="GHC.Builtin.Types.Prim.html#runtimeRep1TyVar"><span class="hs-identifier hs-var">runtimeRep1TyVar</span></a></span><span>
</span><span id="line-434"></span><span>               </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">ArgFlag -&gt; TyVar -&gt; TyConBinder
</span><a href="GHC.Core.TyCon.html#mkNamedTyConBinder"><span class="hs-identifier hs-var">mkNamedTyConBinder</span></a></span><span> </span><span class="annot"><span class="annottext">ArgFlag
</span><a href="GHC.Types.Var.html#Inferred"><span class="hs-identifier hs-var">Inferred</span></a></span><span> </span><span class="annot"><span class="annottext">TyVar
</span><a href="GHC.Builtin.Types.Prim.html#runtimeRep2TyVar"><span class="hs-identifier hs-var">runtimeRep2TyVar</span></a></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-435"></span><span>               </span><span class="annot"><span class="annottext">[TyConBinder] -&gt; [TyConBinder] -&gt; [TyConBinder]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; [TyConBinder]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateAnonTyConBinders"><span class="hs-identifier hs-var">mkTemplateAnonTyConBinders</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">Type -&gt; Type
</span><a href="GHC.Builtin.Types.Prim.html#tYPE"><span class="hs-identifier hs-var">tYPE</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.Prim.html#runtimeRep1Ty"><span class="hs-identifier hs-var">runtimeRep1Ty</span></a></span><span>
</span><span id="line-436"></span><span>                                             </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Type -&gt; Type
</span><a href="GHC.Builtin.Types.Prim.html#tYPE"><span class="hs-identifier hs-var">tYPE</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.Prim.html#runtimeRep2Ty"><span class="hs-identifier hs-var">runtimeRep2Ty</span></a></span><span>
</span><span id="line-437"></span><span>                                             </span><span class="hs-special">]</span><span>
</span><span id="line-438"></span><span>    </span><span id="local-6989586621680832071"><span class="annot"><span class="annottext">tc_rep_nm :: Name
</span><a href="#local-6989586621680832071"><span class="hs-identifier hs-var hs-var">tc_rep_nm</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Name
</span><a href="GHC.Core.TyCon.html#mkPrelTyConRepName"><span class="hs-identifier hs-var">mkPrelTyConRepName</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#funTyConName"><span class="hs-identifier hs-var">funTyConName</span></a></span><span>
</span><span id="line-439"></span><span>
</span><span id="line-440"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
                Kinds
*                                                                      *
************************************************************************

Note [TYPE and RuntimeRep]
~~~~~~~~~~~~~~~~~~~~~~~~~~
All types that classify values have a kind of the form (TYPE rr), where

    data RuntimeRep     -- Defined in ghc-prim:GHC.Types
      = LiftedRep
      | UnliftedRep
      | IntRep
      | FloatRep
      .. etc ..

    rr :: RuntimeRep

    TYPE :: RuntimeRep -&gt; TYPE 'LiftedRep  -- Built in

So for example:
    Int        :: TYPE 'LiftedRep
    Array# Int :: TYPE 'UnliftedRep
    Int#       :: TYPE 'IntRep
    Float#     :: TYPE 'FloatRep
    Maybe      :: TYPE 'LiftedRep -&gt; TYPE 'LiftedRep
    (# , #)    :: TYPE r1 -&gt; TYPE r2 -&gt; TYPE (TupleRep [r1, r2])

We abbreviate '*' specially:
    type * = TYPE 'LiftedRep

The 'rr' parameter tells us how the value is represented at runtime.

Generally speaking, you can't be polymorphic in 'rr'.  E.g
   f :: forall (rr:RuntimeRep) (a:TYPE rr). a -&gt; [a]
   f = /\(rr:RuntimeRep) (a:rr) \(a:rr). ...
This is no good: we could not generate code for 'f', because the
calling convention for 'f' varies depending on whether the argument is
a a Int, Int#, or Float#.  (You could imagine generating specialised
code, one for each instantiation of 'rr', but we don't do that.)

Certain functions CAN be runtime-rep-polymorphic, because the code
generator never has to manipulate a value of type 'a :: TYPE rr'.

* error :: forall (rr:RuntimeRep) (a:TYPE rr). String -&gt; a
  Code generator never has to manipulate the return value.

* unsafeCoerce#, defined in Desugar.mkUnsafeCoercePair:
  Always inlined to be a no-op
     unsafeCoerce# :: forall (r1 :: RuntimeRep) (r2 :: RuntimeRep)
                             (a :: TYPE r1) (b :: TYPE r2).
                             a -&gt; b

* Unboxed tuples, and unboxed sums, defined in GHC.Builtin.Types
  Always inlined, and hence specialised to the call site
     (#,#) :: forall (r1 :: RuntimeRep) (r2 :: RuntimeRep)
                     (a :: TYPE r1) (b :: TYPE r2).
                     a -&gt; b -&gt; TYPE ('TupleRep '[r1, r2])

Note [PrimRep and kindPrimRep]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
As part of its source code, in GHC.Core.TyCon, GHC has
  data PrimRep = LiftedRep | UnliftedRep | IntRep | FloatRep | ...etc...

Notice that
 * RuntimeRep is part of the syntax tree of the program being compiled
     (defined in a library: ghc-prim:GHC.Types)
 * PrimRep is part of GHC's source code.
     (defined in GHC.Core.TyCon)

We need to get from one to the other; that is what kindPrimRep does.
Suppose we have a value
   (v :: t) where (t :: k)
Given this kind
    k = TyConApp &quot;TYPE&quot; [rep]
GHC needs to be able to figure out how 'v' is represented at runtime.
It expects 'rep' to be form
    TyConApp rr_dc args
where 'rr_dc' is a promoteed data constructor from RuntimeRep. So
now we need to go from 'dc' to the corresponding PrimRep.  We store this
PrimRep in the promoted data constructor itself: see TyCon.promDcRepInfo.

-}</span><span>
</span><span id="line-525"></span><span>
</span><span id="line-526"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#tYPETyCon"><span class="hs-identifier hs-type">tYPETyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-527"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#tYPETyConName"><span class="hs-identifier hs-type">tYPETyConName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-528"></span><span>
</span><span id="line-529"></span><span id="tYPETyCon"><span class="annot"><span class="annottext">tYPETyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#tYPETyCon"><span class="hs-identifier hs-var hs-var">tYPETyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyConBinder] -&gt; Type -&gt; [Role] -&gt; Name -&gt; TyCon
</span><a href="GHC.Core.TyCon.html#mkKindTyCon"><span class="hs-identifier hs-var">mkKindTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#tYPETyConName"><span class="hs-identifier hs-var">tYPETyConName</span></a></span><span>
</span><span id="line-530"></span><span>                        </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Type] -&gt; [TyConBinder]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateAnonTyConBinders"><span class="hs-identifier hs-var">mkTemplateAnonTyConBinders</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#runtimeRepTy"><span class="hs-identifier hs-var">runtimeRepTy</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-531"></span><span>                        </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#liftedTypeKind"><span class="hs-identifier hs-var">liftedTypeKind</span></a></span><span>
</span><span id="line-532"></span><span>                        </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Nominal"><span class="hs-identifier hs-var">Nominal</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-533"></span><span>                        </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; Name
</span><a href="GHC.Core.TyCon.html#mkPrelTyConRepName"><span class="hs-identifier hs-var">mkPrelTyConRepName</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#tYPETyConName"><span class="hs-identifier hs-var">tYPETyConName</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-534"></span><span>
</span><span id="line-535"></span><span class="hs-comment">--------------------------</span><span>
</span><span id="line-536"></span><span class="hs-comment">-- ... and now their names</span><span>
</span><span id="line-537"></span><span>
</span><span id="line-538"></span><span class="hs-comment">-- If you edit these, you may need to update the GHC formalism</span><span>
</span><span id="line-539"></span><span class="hs-comment">-- See Note [GHC Formalism] in GHC.Core.Lint</span><span>
</span><span id="line-540"></span><span id="tYPETyConName"><span class="annot"><span class="annottext">tYPETyConName :: Name
</span><a href="GHC.Builtin.Types.Prim.html#tYPETyConName"><span class="hs-identifier hs-var hs-var">tYPETyConName</span></a></span></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTyConName"><span class="hs-identifier hs-var">mkPrimTyConName</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;TYPE&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#tYPETyConKey"><span class="hs-identifier hs-var">tYPETyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#tYPETyCon"><span class="hs-identifier hs-var">tYPETyCon</span></a></span><span>
</span><span id="line-541"></span><span>
</span><span id="line-542"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkPrimTyConName"><span class="hs-identifier hs-type">mkPrimTyConName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Data.FastString.html#FastString"><span class="hs-identifier hs-type">FastString</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Unique.html#Unique"><span class="hs-identifier hs-type">Unique</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-543"></span><span id="mkPrimTyConName"><span class="annot"><span class="annottext">mkPrimTyConName :: FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTyConName"><span class="hs-identifier hs-var hs-var">mkPrimTyConName</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTcName"><span class="hs-identifier hs-var">mkPrimTcName</span></a></span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#BuiltInSyntax"><span class="hs-identifier hs-var">BuiltInSyntax</span></a></span><span>
</span><span id="line-544"></span><span>  </span><span class="hs-comment">-- All of the super kinds and kinds are defined in Prim,</span><span>
</span><span id="line-545"></span><span>  </span><span class="hs-comment">-- and use BuiltInSyntax, because they are never in scope in the source</span><span>
</span><span id="line-546"></span><span>
</span><span id="line-547"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkPrimTcName"><span class="hs-identifier hs-type">mkPrimTcName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#BuiltInSyntax"><span class="hs-identifier hs-type">BuiltInSyntax</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Data.FastString.html#FastString"><span class="hs-identifier hs-type">FastString</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Unique.html#Unique"><span class="hs-identifier hs-type">Unique</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-548"></span><span id="mkPrimTcName"><span class="annot"><span class="annottext">mkPrimTcName :: BuiltInSyntax -&gt; FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.Prim.html#mkPrimTcName"><span class="hs-identifier hs-var hs-var">mkPrimTcName</span></a></span></span><span> </span><span id="local-6989586621680832063"><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="#local-6989586621680832063"><span class="hs-identifier hs-var">built_in_syntax</span></a></span></span><span> </span><span id="local-6989586621680832062"><span class="annot"><span class="annottext">FastString
</span><a href="#local-6989586621680832062"><span class="hs-identifier hs-var">occ</span></a></span></span><span> </span><span id="local-6989586621680832061"><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621680832061"><span class="hs-identifier hs-var">key</span></a></span></span><span> </span><span id="local-6989586621680832060"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680832060"><span class="hs-identifier hs-var">tycon</span></a></span></span><span>
</span><span id="line-549"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Module -&gt; OccName -&gt; Unique -&gt; TyThing -&gt; BuiltInSyntax -&gt; Name
</span><a href="GHC.Types.Name.html#mkWiredInName"><span class="hs-identifier hs-var">mkWiredInName</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_PRIM"><span class="hs-identifier hs-var">gHC_PRIM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">FastString -&gt; OccName
</span><a href="GHC.Types.Name.Occurrence.html#mkTcOccFS"><span class="hs-identifier hs-var">mkTcOccFS</span></a></span><span> </span><span class="annot"><span class="annottext">FastString
</span><a href="#local-6989586621680832062"><span class="hs-identifier hs-var">occ</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621680832061"><span class="hs-identifier hs-var">key</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon -&gt; TyThing
</span><a href="GHC.Core.TyCo.Rep.html#ATyCon"><span class="hs-identifier hs-var">ATyCon</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680832060"><span class="hs-identifier hs-var">tycon</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="#local-6989586621680832063"><span class="hs-identifier hs-var">built_in_syntax</span></a></span><span>
</span><span id="line-550"></span><span>
</span><span id="line-551"></span><span class="hs-comment">-----------------------------</span><span>
</span><span id="line-552"></span><span class="hs-comment">-- | Given a RuntimeRep, applies TYPE to it.</span><span>
</span><span id="line-553"></span><span class="hs-comment">-- see Note [TYPE and RuntimeRep]</span><span>
</span><span id="line-554"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#tYPE"><span class="hs-identifier hs-type">tYPE</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-555"></span><span id="tYPE"><span class="annot"><span class="annottext">tYPE :: Type -&gt; Type
</span><a href="GHC.Builtin.Types.Prim.html#tYPE"><span class="hs-identifier hs-var hs-var">tYPE</span></a></span></span><span> </span><span id="local-6989586621680832059"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680832059"><span class="hs-identifier hs-var">rr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#TyConApp"><span class="hs-identifier hs-var">TyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#tYPETyCon"><span class="hs-identifier hs-var">tYPETyCon</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680832059"><span class="hs-identifier hs-var">rr</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-556"></span><span>
</span><span id="line-557"></span><span class="hs-comment">-- Given a Multiplicity, applies FUN to it.</span><span>
</span><span id="line-558"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#functionWithMultiplicity"><span class="hs-identifier hs-type">functionWithMultiplicity</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-559"></span><span id="functionWithMultiplicity"><span class="annot"><span class="annottext">functionWithMultiplicity :: Type -&gt; Type
</span><a href="GHC.Builtin.Types.Prim.html#functionWithMultiplicity"><span class="hs-identifier hs-var hs-var">functionWithMultiplicity</span></a></span></span><span> </span><span id="local-6989586621680832057"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680832057"><span class="hs-identifier hs-var">mul</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#TyConApp"><span class="hs-identifier hs-var">TyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#funTyCon"><span class="hs-identifier hs-var">funTyCon</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680832057"><span class="hs-identifier hs-var">mul</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-560"></span><span>
</span><span id="line-561"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
   Basic primitive types (@Char#@, @Int#@, etc.)
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-568"></span><span>
</span><span id="line-569"></span><span class="hs-comment">-- only used herein</span><span>
</span><span id="line-570"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon"><span class="hs-identifier hs-type">pcPrimTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.Coercion.Axiom.html#Role"><span class="hs-identifier hs-type">Role</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#PrimRep"><span class="hs-identifier hs-type">PrimRep</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-571"></span><span id="pcPrimTyCon"><span class="annot"><span class="annottext">pcPrimTyCon :: Name -&gt; [Role] -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon"><span class="hs-identifier hs-var hs-var">pcPrimTyCon</span></a></span></span><span> </span><span id="local-6989586621680832055"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680832055"><span class="hs-identifier hs-var">name</span></a></span></span><span> </span><span id="local-6989586621680832054"><span class="annot"><span class="annottext">[Role]
</span><a href="#local-6989586621680832054"><span class="hs-identifier hs-var">roles</span></a></span></span><span> </span><span id="local-6989586621680832053"><span class="annot"><span class="annottext">PrimRep
</span><a href="#local-6989586621680832053"><span class="hs-identifier hs-var">rep</span></a></span></span><span>
</span><span id="line-572"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyConBinder] -&gt; Type -&gt; [Role] -&gt; TyCon
</span><a href="GHC.Core.TyCon.html#mkPrimTyCon"><span class="hs-identifier hs-var">mkPrimTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680832055"><span class="hs-identifier hs-var">name</span></a></span><span> </span><span class="annot"><span class="annottext">[TyConBinder]
</span><a href="#local-6989586621680832051"><span class="hs-identifier hs-var">binders</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680832050"><span class="hs-identifier hs-var">result_kind</span></a></span><span> </span><span class="annot"><span class="annottext">[Role]
</span><a href="#local-6989586621680832054"><span class="hs-identifier hs-var">roles</span></a></span><span>
</span><span id="line-573"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-574"></span><span>    </span><span id="local-6989586621680832051"><span class="annot"><span class="annottext">binders :: [TyConBinder]
</span><a href="#local-6989586621680832051"><span class="hs-identifier hs-var hs-var">binders</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; [TyConBinder]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateAnonTyConBinders"><span class="hs-identifier hs-var">mkTemplateAnonTyConBinders</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(Role -&gt; Type) -&gt; [Role] -&gt; [Type]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Type -&gt; Role -&gt; Type
forall a b. a -&gt; b -&gt; a
</span><a href="../../base/src/GHC.Base.html#const"><span class="hs-identifier hs-var">const</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#liftedTypeKind"><span class="hs-identifier hs-var">liftedTypeKind</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[Role]
</span><a href="#local-6989586621680832054"><span class="hs-identifier hs-var">roles</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-575"></span><span>    </span><span id="local-6989586621680832050"><span class="annot"><span class="annottext">result_kind :: Type
</span><a href="#local-6989586621680832050"><span class="hs-identifier hs-var hs-var">result_kind</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Type -&gt; Type
</span><a href="GHC.Builtin.Types.Prim.html#tYPE"><span class="hs-identifier hs-var">tYPE</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">PrimRep -&gt; Type
</span><a href="GHC.Builtin.Types.Prim.html#primRepToRuntimeRep"><span class="hs-identifier hs-var">primRepToRuntimeRep</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="#local-6989586621680832053"><span class="hs-identifier hs-var">rep</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-576"></span><span>
</span><span id="line-577"></span><span class="hs-comment">-- | Convert a 'PrimRep' to a 'Type' of kind RuntimeRep</span><span>
</span><span id="line-578"></span><span class="hs-comment">-- Defined here to avoid (more) module loops</span><span>
</span><span id="line-579"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#primRepToRuntimeRep"><span class="hs-identifier hs-type">primRepToRuntimeRep</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#PrimRep"><span class="hs-identifier hs-type">PrimRep</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-580"></span><span id="primRepToRuntimeRep"><span class="annot"><span class="annottext">primRepToRuntimeRep :: PrimRep -&gt; Type
</span><a href="GHC.Builtin.Types.Prim.html#primRepToRuntimeRep"><span class="hs-identifier hs-var hs-var">primRepToRuntimeRep</span></a></span></span><span> </span><span id="local-6989586621680832048"><span class="annot"><span class="annottext">PrimRep
</span><a href="#local-6989586621680832048"><span class="hs-identifier hs-var">rep</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="#local-6989586621680832048"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-581"></span><span>  </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#VoidRep"><span class="hs-identifier hs-var">VoidRep</span></a></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#TyConApp"><span class="hs-identifier hs-var">TyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#tupleRepDataConTyCon"><span class="hs-identifier hs-var">tupleRepDataConTyCon</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type -&gt; [Type] -&gt; Type
</span><a href="GHC.Builtin.Types.html#mkPromotedListTy"><span class="hs-identifier hs-var">mkPromotedListTy</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#runtimeRepTy"><span class="hs-identifier hs-var">runtimeRepTy</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">]</span><span>
</span><span id="line-582"></span><span>  </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#LiftedRep"><span class="hs-identifier hs-var">LiftedRep</span></a></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#liftedRepDataConTy"><span class="hs-identifier hs-var">liftedRepDataConTy</span></a></span><span>
</span><span id="line-583"></span><span>  </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#UnliftedRep"><span class="hs-identifier hs-var">UnliftedRep</span></a></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#unliftedRepDataConTy"><span class="hs-identifier hs-var">unliftedRepDataConTy</span></a></span><span>
</span><span id="line-584"></span><span>  </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#IntRep"><span class="hs-identifier hs-var">IntRep</span></a></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#intRepDataConTy"><span class="hs-identifier hs-var">intRepDataConTy</span></a></span><span>
</span><span id="line-585"></span><span>  </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Int8Rep"><span class="hs-identifier hs-var">Int8Rep</span></a></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#int8RepDataConTy"><span class="hs-identifier hs-var">int8RepDataConTy</span></a></span><span>
</span><span id="line-586"></span><span>  </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Int16Rep"><span class="hs-identifier hs-var">Int16Rep</span></a></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#int16RepDataConTy"><span class="hs-identifier hs-var">int16RepDataConTy</span></a></span><span>
</span><span id="line-587"></span><span>  </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Int32Rep"><span class="hs-identifier hs-var">Int32Rep</span></a></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#int32RepDataConTy"><span class="hs-identifier hs-var">int32RepDataConTy</span></a></span><span>
</span><span id="line-588"></span><span>  </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Int64Rep"><span class="hs-identifier hs-var">Int64Rep</span></a></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#int64RepDataConTy"><span class="hs-identifier hs-var">int64RepDataConTy</span></a></span><span>
</span><span id="line-589"></span><span>  </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#WordRep"><span class="hs-identifier hs-var">WordRep</span></a></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#wordRepDataConTy"><span class="hs-identifier hs-var">wordRepDataConTy</span></a></span><span>
</span><span id="line-590"></span><span>  </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Word8Rep"><span class="hs-identifier hs-var">Word8Rep</span></a></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#word8RepDataConTy"><span class="hs-identifier hs-var">word8RepDataConTy</span></a></span><span>
</span><span id="line-591"></span><span>  </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Word16Rep"><span class="hs-identifier hs-var">Word16Rep</span></a></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#word16RepDataConTy"><span class="hs-identifier hs-var">word16RepDataConTy</span></a></span><span>
</span><span id="line-592"></span><span>  </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Word32Rep"><span class="hs-identifier hs-var">Word32Rep</span></a></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#word32RepDataConTy"><span class="hs-identifier hs-var">word32RepDataConTy</span></a></span><span>
</span><span id="line-593"></span><span>  </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Word64Rep"><span class="hs-identifier hs-var">Word64Rep</span></a></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#word64RepDataConTy"><span class="hs-identifier hs-var">word64RepDataConTy</span></a></span><span>
</span><span id="line-594"></span><span>  </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#AddrRep"><span class="hs-identifier hs-var">AddrRep</span></a></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#addrRepDataConTy"><span class="hs-identifier hs-var">addrRepDataConTy</span></a></span><span>
</span><span id="line-595"></span><span>  </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#FloatRep"><span class="hs-identifier hs-var">FloatRep</span></a></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#floatRepDataConTy"><span class="hs-identifier hs-var">floatRepDataConTy</span></a></span><span>
</span><span id="line-596"></span><span>  </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#DoubleRep"><span class="hs-identifier hs-var">DoubleRep</span></a></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#doubleRepDataConTy"><span class="hs-identifier hs-var">doubleRepDataConTy</span></a></span><span>
</span><span id="line-597"></span><span>  </span><span class="annot"><a href="GHC.Core.TyCon.html#VecRep"><span class="hs-identifier hs-type">VecRep</span></a></span><span> </span><span id="local-6989586621680832031"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680832031"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span id="local-6989586621680832030"><span class="annot"><span class="annottext">PrimElemRep
</span><a href="#local-6989586621680832030"><span class="hs-identifier hs-var">elem</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#TyConApp"><span class="hs-identifier hs-var">TyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#vecRepDataConTyCon"><span class="hs-identifier hs-var">vecRepDataConTyCon</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680832029"><span class="hs-identifier hs-var">n'</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680832028"><span class="hs-identifier hs-var">elem'</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-598"></span><span>    </span><span class="hs-keyword">where</span><span>
</span><span id="line-599"></span><span>      </span><span id="local-6989586621680832029"><span class="annot"><span class="annottext">n' :: Type
</span><a href="#local-6989586621680832029"><span class="hs-identifier hs-var hs-var">n'</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680832031"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-600"></span><span>        </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#vec2DataConTy"><span class="hs-identifier hs-var">vec2DataConTy</span></a></span><span>
</span><span id="line-601"></span><span>        </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">4</span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#vec4DataConTy"><span class="hs-identifier hs-var">vec4DataConTy</span></a></span><span>
</span><span id="line-602"></span><span>        </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">8</span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#vec8DataConTy"><span class="hs-identifier hs-var">vec8DataConTy</span></a></span><span>
</span><span id="line-603"></span><span>        </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">16</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#vec16DataConTy"><span class="hs-identifier hs-var">vec16DataConTy</span></a></span><span>
</span><span id="line-604"></span><span>        </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">32</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#vec32DataConTy"><span class="hs-identifier hs-var">vec32DataConTy</span></a></span><span>
</span><span id="line-605"></span><span>        </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">64</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#vec64DataConTy"><span class="hs-identifier hs-var">vec64DataConTy</span></a></span><span>
</span><span id="line-606"></span><span>        </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc -&gt; Type
forall a. HasCallStack =&gt; String -&gt; SDoc -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprPanic"><span class="hs-identifier hs-var">pprPanic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Disallowed VecCount&quot;</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680832031"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-607"></span><span>
</span><span id="line-608"></span><span>      </span><span id="local-6989586621680832028"><span class="annot"><span class="annottext">elem' :: Type
</span><a href="#local-6989586621680832028"><span class="hs-identifier hs-var hs-var">elem'</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">PrimElemRep
</span><a href="#local-6989586621680832030"><span class="hs-identifier hs-var">elem</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-609"></span><span>        </span><span class="annot"><span class="annottext">PrimElemRep
</span><a href="GHC.Core.TyCon.html#Int8ElemRep"><span class="hs-identifier hs-var">Int8ElemRep</span></a></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#int8ElemRepDataConTy"><span class="hs-identifier hs-var">int8ElemRepDataConTy</span></a></span><span>
</span><span id="line-610"></span><span>        </span><span class="annot"><span class="annottext">PrimElemRep
</span><a href="GHC.Core.TyCon.html#Int16ElemRep"><span class="hs-identifier hs-var">Int16ElemRep</span></a></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#int16ElemRepDataConTy"><span class="hs-identifier hs-var">int16ElemRepDataConTy</span></a></span><span>
</span><span id="line-611"></span><span>        </span><span class="annot"><span class="annottext">PrimElemRep
</span><a href="GHC.Core.TyCon.html#Int32ElemRep"><span class="hs-identifier hs-var">Int32ElemRep</span></a></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#int32ElemRepDataConTy"><span class="hs-identifier hs-var">int32ElemRepDataConTy</span></a></span><span>
</span><span id="line-612"></span><span>        </span><span class="annot"><span class="annottext">PrimElemRep
</span><a href="GHC.Core.TyCon.html#Int64ElemRep"><span class="hs-identifier hs-var">Int64ElemRep</span></a></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#int64ElemRepDataConTy"><span class="hs-identifier hs-var">int64ElemRepDataConTy</span></a></span><span>
</span><span id="line-613"></span><span>        </span><span class="annot"><span class="annottext">PrimElemRep
</span><a href="GHC.Core.TyCon.html#Word8ElemRep"><span class="hs-identifier hs-var">Word8ElemRep</span></a></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#word8ElemRepDataConTy"><span class="hs-identifier hs-var">word8ElemRepDataConTy</span></a></span><span>
</span><span id="line-614"></span><span>        </span><span class="annot"><span class="annottext">PrimElemRep
</span><a href="GHC.Core.TyCon.html#Word16ElemRep"><span class="hs-identifier hs-var">Word16ElemRep</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#word16ElemRepDataConTy"><span class="hs-identifier hs-var">word16ElemRepDataConTy</span></a></span><span>
</span><span id="line-615"></span><span>        </span><span class="annot"><span class="annottext">PrimElemRep
</span><a href="GHC.Core.TyCon.html#Word32ElemRep"><span class="hs-identifier hs-var">Word32ElemRep</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#word32ElemRepDataConTy"><span class="hs-identifier hs-var">word32ElemRepDataConTy</span></a></span><span>
</span><span id="line-616"></span><span>        </span><span class="annot"><span class="annottext">PrimElemRep
</span><a href="GHC.Core.TyCon.html#Word64ElemRep"><span class="hs-identifier hs-var">Word64ElemRep</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#word64ElemRepDataConTy"><span class="hs-identifier hs-var">word64ElemRepDataConTy</span></a></span><span>
</span><span id="line-617"></span><span>        </span><span class="annot"><span class="annottext">PrimElemRep
</span><a href="GHC.Core.TyCon.html#FloatElemRep"><span class="hs-identifier hs-var">FloatElemRep</span></a></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#floatElemRepDataConTy"><span class="hs-identifier hs-var">floatElemRepDataConTy</span></a></span><span>
</span><span id="line-618"></span><span>        </span><span class="annot"><span class="annottext">PrimElemRep
</span><a href="GHC.Core.TyCon.html#DoubleElemRep"><span class="hs-identifier hs-var">DoubleElemRep</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#doubleElemRepDataConTy"><span class="hs-identifier hs-var">doubleElemRepDataConTy</span></a></span><span>
</span><span id="line-619"></span><span>
</span><span id="line-620"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon0"><span class="hs-identifier hs-type">pcPrimTyCon0</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#PrimRep"><span class="hs-identifier hs-type">PrimRep</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-621"></span><span id="pcPrimTyCon0"><span class="annot"><span class="annottext">pcPrimTyCon0 :: Name -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon0"><span class="hs-identifier hs-var hs-var">pcPrimTyCon0</span></a></span></span><span> </span><span id="local-6989586621680832008"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680832008"><span class="hs-identifier hs-var">name</span></a></span></span><span> </span><span id="local-6989586621680832007"><span class="annot"><span class="annottext">PrimRep
</span><a href="#local-6989586621680832007"><span class="hs-identifier hs-var">rep</span></a></span></span><span>
</span><span id="line-622"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [Role] -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon"><span class="hs-identifier hs-var">pcPrimTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680832008"><span class="hs-identifier hs-var">name</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="#local-6989586621680832007"><span class="hs-identifier hs-var">rep</span></a></span><span>
</span><span id="line-623"></span><span>
</span><span id="line-624"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#charPrimTy"><span class="hs-identifier hs-type">charPrimTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-625"></span><span id="charPrimTy"><span class="annot"><span class="annottext">charPrimTy :: Type
</span><a href="GHC.Builtin.Types.Prim.html#charPrimTy"><span class="hs-identifier hs-var hs-var">charPrimTy</span></a></span></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#charPrimTyCon"><span class="hs-identifier hs-var">charPrimTyCon</span></a></span><span>
</span><span id="line-626"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#charPrimTyCon"><span class="hs-identifier hs-type">charPrimTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-627"></span><span id="charPrimTyCon"><span class="annot"><span class="annottext">charPrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#charPrimTyCon"><span class="hs-identifier hs-var hs-var">charPrimTyCon</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon0"><span class="hs-identifier hs-var">pcPrimTyCon0</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#charPrimTyConName"><span class="hs-identifier hs-var">charPrimTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#WordRep"><span class="hs-identifier hs-var">WordRep</span></a></span><span>
</span><span id="line-628"></span><span>
</span><span id="line-629"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#intPrimTy"><span class="hs-identifier hs-type">intPrimTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-630"></span><span id="intPrimTy"><span class="annot"><span class="annottext">intPrimTy :: Type
</span><a href="GHC.Builtin.Types.Prim.html#intPrimTy"><span class="hs-identifier hs-var hs-var">intPrimTy</span></a></span></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#intPrimTyCon"><span class="hs-identifier hs-var">intPrimTyCon</span></a></span><span>
</span><span id="line-631"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#intPrimTyCon"><span class="hs-identifier hs-type">intPrimTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-632"></span><span id="intPrimTyCon"><span class="annot"><span class="annottext">intPrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#intPrimTyCon"><span class="hs-identifier hs-var hs-var">intPrimTyCon</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon0"><span class="hs-identifier hs-var">pcPrimTyCon0</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#intPrimTyConName"><span class="hs-identifier hs-var">intPrimTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#IntRep"><span class="hs-identifier hs-var">IntRep</span></a></span><span>
</span><span id="line-633"></span><span>
</span><span id="line-634"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#int8PrimTy"><span class="hs-identifier hs-type">int8PrimTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-635"></span><span id="int8PrimTy"><span class="annot"><span class="annottext">int8PrimTy :: Type
</span><a href="GHC.Builtin.Types.Prim.html#int8PrimTy"><span class="hs-identifier hs-var hs-var">int8PrimTy</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#int8PrimTyCon"><span class="hs-identifier hs-var">int8PrimTyCon</span></a></span><span>
</span><span id="line-636"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#int8PrimTyCon"><span class="hs-identifier hs-type">int8PrimTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-637"></span><span id="int8PrimTyCon"><span class="annot"><span class="annottext">int8PrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#int8PrimTyCon"><span class="hs-identifier hs-var hs-var">int8PrimTyCon</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon0"><span class="hs-identifier hs-var">pcPrimTyCon0</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#int8PrimTyConName"><span class="hs-identifier hs-var">int8PrimTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Int8Rep"><span class="hs-identifier hs-var">Int8Rep</span></a></span><span>
</span><span id="line-638"></span><span>
</span><span id="line-639"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#int16PrimTy"><span class="hs-identifier hs-type">int16PrimTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-640"></span><span id="int16PrimTy"><span class="annot"><span class="annottext">int16PrimTy :: Type
</span><a href="GHC.Builtin.Types.Prim.html#int16PrimTy"><span class="hs-identifier hs-var hs-var">int16PrimTy</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#int16PrimTyCon"><span class="hs-identifier hs-var">int16PrimTyCon</span></a></span><span>
</span><span id="line-641"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#int16PrimTyCon"><span class="hs-identifier hs-type">int16PrimTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-642"></span><span id="int16PrimTyCon"><span class="annot"><span class="annottext">int16PrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#int16PrimTyCon"><span class="hs-identifier hs-var hs-var">int16PrimTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon0"><span class="hs-identifier hs-var">pcPrimTyCon0</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#int16PrimTyConName"><span class="hs-identifier hs-var">int16PrimTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Int16Rep"><span class="hs-identifier hs-var">Int16Rep</span></a></span><span>
</span><span id="line-643"></span><span>
</span><span id="line-644"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#int32PrimTy"><span class="hs-identifier hs-type">int32PrimTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-645"></span><span id="int32PrimTy"><span class="annot"><span class="annottext">int32PrimTy :: Type
</span><a href="GHC.Builtin.Types.Prim.html#int32PrimTy"><span class="hs-identifier hs-var hs-var">int32PrimTy</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#int32PrimTyCon"><span class="hs-identifier hs-var">int32PrimTyCon</span></a></span><span>
</span><span id="line-646"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#int32PrimTyCon"><span class="hs-identifier hs-type">int32PrimTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-647"></span><span id="int32PrimTyCon"><span class="annot"><span class="annottext">int32PrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#int32PrimTyCon"><span class="hs-identifier hs-var hs-var">int32PrimTyCon</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon0"><span class="hs-identifier hs-var">pcPrimTyCon0</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#int32PrimTyConName"><span class="hs-identifier hs-var">int32PrimTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Int32Rep"><span class="hs-identifier hs-var">Int32Rep</span></a></span><span>
</span><span id="line-648"></span><span>
</span><span id="line-649"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#int64PrimTy"><span class="hs-identifier hs-type">int64PrimTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-650"></span><span id="int64PrimTy"><span class="annot"><span class="annottext">int64PrimTy :: Type
</span><a href="GHC.Builtin.Types.Prim.html#int64PrimTy"><span class="hs-identifier hs-var hs-var">int64PrimTy</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#int64PrimTyCon"><span class="hs-identifier hs-var">int64PrimTyCon</span></a></span><span>
</span><span id="line-651"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#int64PrimTyCon"><span class="hs-identifier hs-type">int64PrimTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-652"></span><span id="int64PrimTyCon"><span class="annot"><span class="annottext">int64PrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#int64PrimTyCon"><span class="hs-identifier hs-var hs-var">int64PrimTyCon</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon0"><span class="hs-identifier hs-var">pcPrimTyCon0</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#int64PrimTyConName"><span class="hs-identifier hs-var">int64PrimTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Int64Rep"><span class="hs-identifier hs-var">Int64Rep</span></a></span><span>
</span><span id="line-653"></span><span>
</span><span id="line-654"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#wordPrimTy"><span class="hs-identifier hs-type">wordPrimTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-655"></span><span id="wordPrimTy"><span class="annot"><span class="annottext">wordPrimTy :: Type
</span><a href="GHC.Builtin.Types.Prim.html#wordPrimTy"><span class="hs-identifier hs-var hs-var">wordPrimTy</span></a></span></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#wordPrimTyCon"><span class="hs-identifier hs-var">wordPrimTyCon</span></a></span><span>
</span><span id="line-656"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#wordPrimTyCon"><span class="hs-identifier hs-type">wordPrimTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-657"></span><span id="wordPrimTyCon"><span class="annot"><span class="annottext">wordPrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#wordPrimTyCon"><span class="hs-identifier hs-var hs-var">wordPrimTyCon</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon0"><span class="hs-identifier hs-var">pcPrimTyCon0</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#wordPrimTyConName"><span class="hs-identifier hs-var">wordPrimTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#WordRep"><span class="hs-identifier hs-var">WordRep</span></a></span><span>
</span><span id="line-658"></span><span>
</span><span id="line-659"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#word8PrimTy"><span class="hs-identifier hs-type">word8PrimTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-660"></span><span id="word8PrimTy"><span class="annot"><span class="annottext">word8PrimTy :: Type
</span><a href="GHC.Builtin.Types.Prim.html#word8PrimTy"><span class="hs-identifier hs-var hs-var">word8PrimTy</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#word8PrimTyCon"><span class="hs-identifier hs-var">word8PrimTyCon</span></a></span><span>
</span><span id="line-661"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#word8PrimTyCon"><span class="hs-identifier hs-type">word8PrimTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-662"></span><span id="word8PrimTyCon"><span class="annot"><span class="annottext">word8PrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#word8PrimTyCon"><span class="hs-identifier hs-var hs-var">word8PrimTyCon</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon0"><span class="hs-identifier hs-var">pcPrimTyCon0</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#word8PrimTyConName"><span class="hs-identifier hs-var">word8PrimTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Word8Rep"><span class="hs-identifier hs-var">Word8Rep</span></a></span><span>
</span><span id="line-663"></span><span>
</span><span id="line-664"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#word16PrimTy"><span class="hs-identifier hs-type">word16PrimTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-665"></span><span id="word16PrimTy"><span class="annot"><span class="annottext">word16PrimTy :: Type
</span><a href="GHC.Builtin.Types.Prim.html#word16PrimTy"><span class="hs-identifier hs-var hs-var">word16PrimTy</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#word16PrimTyCon"><span class="hs-identifier hs-var">word16PrimTyCon</span></a></span><span>
</span><span id="line-666"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#word16PrimTyCon"><span class="hs-identifier hs-type">word16PrimTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-667"></span><span id="word16PrimTyCon"><span class="annot"><span class="annottext">word16PrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#word16PrimTyCon"><span class="hs-identifier hs-var hs-var">word16PrimTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon0"><span class="hs-identifier hs-var">pcPrimTyCon0</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#word16PrimTyConName"><span class="hs-identifier hs-var">word16PrimTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Word16Rep"><span class="hs-identifier hs-var">Word16Rep</span></a></span><span>
</span><span id="line-668"></span><span>
</span><span id="line-669"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#word32PrimTy"><span class="hs-identifier hs-type">word32PrimTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-670"></span><span id="word32PrimTy"><span class="annot"><span class="annottext">word32PrimTy :: Type
</span><a href="GHC.Builtin.Types.Prim.html#word32PrimTy"><span class="hs-identifier hs-var hs-var">word32PrimTy</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#word32PrimTyCon"><span class="hs-identifier hs-var">word32PrimTyCon</span></a></span><span>
</span><span id="line-671"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#word32PrimTyCon"><span class="hs-identifier hs-type">word32PrimTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-672"></span><span id="word32PrimTyCon"><span class="annot"><span class="annottext">word32PrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#word32PrimTyCon"><span class="hs-identifier hs-var hs-var">word32PrimTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon0"><span class="hs-identifier hs-var">pcPrimTyCon0</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#word32PrimTyConName"><span class="hs-identifier hs-var">word32PrimTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Word32Rep"><span class="hs-identifier hs-var">Word32Rep</span></a></span><span>
</span><span id="line-673"></span><span>
</span><span id="line-674"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#word64PrimTy"><span class="hs-identifier hs-type">word64PrimTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-675"></span><span id="word64PrimTy"><span class="annot"><span class="annottext">word64PrimTy :: Type
</span><a href="GHC.Builtin.Types.Prim.html#word64PrimTy"><span class="hs-identifier hs-var hs-var">word64PrimTy</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#word64PrimTyCon"><span class="hs-identifier hs-var">word64PrimTyCon</span></a></span><span>
</span><span id="line-676"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#word64PrimTyCon"><span class="hs-identifier hs-type">word64PrimTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-677"></span><span id="word64PrimTyCon"><span class="annot"><span class="annottext">word64PrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#word64PrimTyCon"><span class="hs-identifier hs-var hs-var">word64PrimTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon0"><span class="hs-identifier hs-var">pcPrimTyCon0</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#word64PrimTyConName"><span class="hs-identifier hs-var">word64PrimTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Word64Rep"><span class="hs-identifier hs-var">Word64Rep</span></a></span><span>
</span><span id="line-678"></span><span>
</span><span id="line-679"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#addrPrimTy"><span class="hs-identifier hs-type">addrPrimTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-680"></span><span id="addrPrimTy"><span class="annot"><span class="annottext">addrPrimTy :: Type
</span><a href="GHC.Builtin.Types.Prim.html#addrPrimTy"><span class="hs-identifier hs-var hs-var">addrPrimTy</span></a></span></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#addrPrimTyCon"><span class="hs-identifier hs-var">addrPrimTyCon</span></a></span><span>
</span><span id="line-681"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#addrPrimTyCon"><span class="hs-identifier hs-type">addrPrimTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-682"></span><span id="addrPrimTyCon"><span class="annot"><span class="annottext">addrPrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#addrPrimTyCon"><span class="hs-identifier hs-var hs-var">addrPrimTyCon</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon0"><span class="hs-identifier hs-var">pcPrimTyCon0</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#addrPrimTyConName"><span class="hs-identifier hs-var">addrPrimTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#AddrRep"><span class="hs-identifier hs-var">AddrRep</span></a></span><span>
</span><span id="line-683"></span><span>
</span><span id="line-684"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#floatPrimTy"><span class="hs-identifier hs-type">floatPrimTy</span></a></span><span>     </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-685"></span><span id="floatPrimTy"><span class="annot"><span class="annottext">floatPrimTy :: Type
</span><a href="GHC.Builtin.Types.Prim.html#floatPrimTy"><span class="hs-identifier hs-var hs-var">floatPrimTy</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#floatPrimTyCon"><span class="hs-identifier hs-var">floatPrimTyCon</span></a></span><span>
</span><span id="line-686"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#floatPrimTyCon"><span class="hs-identifier hs-type">floatPrimTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-687"></span><span id="floatPrimTyCon"><span class="annot"><span class="annottext">floatPrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#floatPrimTyCon"><span class="hs-identifier hs-var hs-var">floatPrimTyCon</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon0"><span class="hs-identifier hs-var">pcPrimTyCon0</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#floatPrimTyConName"><span class="hs-identifier hs-var">floatPrimTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#FloatRep"><span class="hs-identifier hs-var">FloatRep</span></a></span><span>
</span><span id="line-688"></span><span>
</span><span id="line-689"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#doublePrimTy"><span class="hs-identifier hs-type">doublePrimTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-690"></span><span id="doublePrimTy"><span class="annot"><span class="annottext">doublePrimTy :: Type
</span><a href="GHC.Builtin.Types.Prim.html#doublePrimTy"><span class="hs-identifier hs-var hs-var">doublePrimTy</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#doublePrimTyCon"><span class="hs-identifier hs-var">doublePrimTyCon</span></a></span><span>
</span><span id="line-691"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#doublePrimTyCon"><span class="hs-identifier hs-type">doublePrimTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-692"></span><span id="doublePrimTyCon"><span class="annot"><span class="annottext">doublePrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#doublePrimTyCon"><span class="hs-identifier hs-var hs-var">doublePrimTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon0"><span class="hs-identifier hs-var">pcPrimTyCon0</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#doublePrimTyConName"><span class="hs-identifier hs-var">doublePrimTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#DoubleRep"><span class="hs-identifier hs-var">DoubleRep</span></a></span><span>
</span><span id="line-693"></span><span>
</span><span id="line-694"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
   The @State#@ type (and @_RealWorld@ types)
*                                                                      *
************************************************************************

Note [The equality types story]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
GHC sports a veritable menagerie of equality types:

         Type or  Lifted?  Hetero?  Role      Built in         Defining module
         class?    L/U                        TyCon
-----------------------------------------------------------------------------------------
~#         T        U      hetero   nominal   eqPrimTyCon      GHC.Prim
~~         C        L      hetero   nominal   heqTyCon         GHC.Types
~          C        L      homo     nominal   eqTyCon          GHC.Types
:~:        T        L      homo     nominal   (not built-in)   Data.Type.Equality
:~~:       T        L      hetero   nominal   (not built-in)   Data.Type.Equality

~R#        T        U      hetero   repr      eqReprPrimTy     GHC.Prim
Coercible  C        L      homo     repr      coercibleTyCon   GHC.Types
Coercion   T        L      homo     repr      (not built-in)   Data.Type.Coercion
~P#        T        U      hetero   phantom   eqPhantPrimTyCon GHC.Prim

Recall that &quot;hetero&quot; means the equality can related types of different
kinds. Knowing that (t1 ~# t2) or (t1 ~R# t2) or even that (t1 ~P# t2)
also means that (k1 ~# k2), where (t1 :: k1) and (t2 :: k2).

To produce less confusion for end users, when not dumping and without
-fprint-equality-relations, each of these groups is printed as the bottommost
listed equality. That is, (~#) and (~~) are both rendered as (~) in
error messages, and (~R#) is rendered as Coercible.

Let's take these one at a time:

    --------------------------
    (~#) :: forall k1 k2. k1 -&gt; k2 -&gt; #
    --------------------------
This is The Type Of Equality in GHC. It classifies nominal coercions.
This type is used in the solver for recording equality constraints.
It responds &quot;yes&quot; to Type.isEqPrimPred and classifies as an EqPred in
Type.classifyPredType.

All wanted constraints of this type are built with coercion holes.
(See Note [Coercion holes] in GHC.Core.TyCo.Rep.) But see also
Note [Deferred errors for coercion holes] in GHC.Tc.Errors to see how
equality constraints are deferred.

Within GHC, ~# is called eqPrimTyCon, and it is defined in GHC.Builtin.Types.Prim.


    --------------------------
    (~~) :: forall k1 k2. k1 -&gt; k2 -&gt; Constraint
    --------------------------
This is (almost) an ordinary class, defined as if by
  class a ~# b =&gt; a ~~ b
  instance a ~# b =&gt; a ~~ b
Here's what's unusual about it:

 * We can't actually declare it that way because we don't have syntax for ~#.
   And ~# isn't a constraint, so even if we could write it, it wouldn't kind
   check.

 * Users cannot write instances of it.

 * It is &quot;naturally coherent&quot;. This means that the solver won't hesitate to
   solve a goal of type (a ~~ b) even if there is, say (Int ~~ c) in the
   context. (Normally, it waits to learn more, just in case the given
   influences what happens next.) See Note [Naturally coherent classes]
   in GHC.Tc.Solver.Interact.

 * It always terminates. That is, in the UndecidableInstances checks, we
   don't worry if a (~~) constraint is too big, as we know that solving
   equality terminates.

On the other hand, this behaves just like any class w.r.t. eager superclass
unpacking in the solver. So a lifted equality given quickly becomes an unlifted
equality given. This is good, because the solver knows all about unlifted
equalities. There is some special-casing in GHC.Tc.Solver.Interact.matchClassInst to
pretend that there is an instance of this class, as we can't write the instance
in Haskell.

Within GHC, ~~ is called heqTyCon, and it is defined in GHC.Builtin.Types.


    --------------------------
    (~) :: forall k. k -&gt; k -&gt; Constraint
    --------------------------
This is /exactly/ like (~~), except with a homogeneous kind.
It is an almost-ordinary class defined as if by
  class a ~# b =&gt; (a :: k) ~ (b :: k)
  instance a ~# b =&gt; a ~ b

 * All the bullets for (~~) apply

 * In addition (~) is magical syntax, as ~ is a reserved symbol.
   It cannot be exported or imported.

Within GHC, ~ is called eqTyCon, and it is defined in GHC.Builtin.Types.

Historical note: prior to July 18 (~) was defined as a
  more-ordinary class with (~~) as a superclass.  But that made it
  special in different ways; and the extra superclass selections to
  get from (~) to (~#) via (~~) were tiresome.  Now it's defined
  uniformly with (~~) and Coercible; much nicer.)


    --------------------------
    (:~:) :: forall k. k -&gt; k -&gt; *
    (:~~:) :: forall k1 k2. k1 -&gt; k2 -&gt; *
    --------------------------
These are perfectly ordinary GADTs, wrapping (~) and (~~) resp.
They are not defined within GHC at all.


    --------------------------
    (~R#) :: forall k1 k2. k1 -&gt; k2 -&gt; #
    --------------------------
The is the representational analogue of ~#. This is the type of representational
equalities that the solver works on. All wanted constraints of this type are
built with coercion holes.

Within GHC, ~R# is called eqReprPrimTyCon, and it is defined in GHC.Builtin.Types.Prim.


    --------------------------
    Coercible :: forall k. k -&gt; k -&gt; Constraint
    --------------------------
This is quite like (~~) in the way it's defined and treated within GHC, but
it's homogeneous. Homogeneity helps with type inference (as GHC can solve one
kind from the other) and, in my (Richard's) estimation, will be more intuitive
for users.

An alternative design included HCoercible (like (~~)) and Coercible (like (~)).
One annoyance was that we want `coerce :: Coercible a b =&gt; a -&gt; b`, and
we need the type of coerce to be fully wired-in. So the HCoercible/Coercible
split required that both types be fully wired-in. Instead of doing this,
I just got rid of HCoercible, as I'm not sure who would use it, anyway.

Within GHC, Coercible is called coercibleTyCon, and it is defined in
GHC.Builtin.Types.


    --------------------------
    Coercion :: forall k. k -&gt; k -&gt; *
    --------------------------
This is a perfectly ordinary GADT, wrapping Coercible. It is not defined
within GHC at all.


    --------------------------
    (~P#) :: forall k1 k2. k1 -&gt; k2 -&gt; #
    --------------------------
This is the phantom analogue of ~# and it is barely used at all.
(The solver has no idea about this one.) Here is the motivation:

    data Phant a = MkPhant
    type role Phant phantom

    Phant &lt;Int, Bool&gt;_P :: Phant Int ~P# Phant Bool

We just need to have something to put on that last line. You probably
don't need to worry about it.



Note [The State# TyCon]
~~~~~~~~~~~~~~~~~~~~~~~
State# is the primitive, unlifted type of states.  It has one type parameter,
thus
        State# RealWorld
or
        State# s

where s is a type variable. The only purpose of the type parameter is to
keep different state threads separate.  It is represented by nothing at all.

The type parameter to State# is intended to keep separate threads separate.
Even though this parameter is not used in the definition of State#, it is
given role Nominal to enforce its intended use.
-}</span><span>
</span><span id="line-876"></span><span>
</span><span id="line-877"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkStatePrimTy"><span class="hs-identifier hs-type">mkStatePrimTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-878"></span><span id="mkStatePrimTy"><span class="annot"><span class="annottext">mkStatePrimTy :: Type -&gt; Type
</span><a href="GHC.Builtin.Types.Prim.html#mkStatePrimTy"><span class="hs-identifier hs-var hs-var">mkStatePrimTy</span></a></span></span><span> </span><span id="local-6989586621680832006"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680832006"><span class="hs-identifier hs-var">ty</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#TyConApp"><span class="hs-identifier hs-var">TyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#statePrimTyCon"><span class="hs-identifier hs-var">statePrimTyCon</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680832006"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-879"></span><span>
</span><span id="line-880"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#statePrimTyCon"><span class="hs-identifier hs-type">statePrimTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>   </span><span class="hs-comment">-- See Note [The State# TyCon]</span><span>
</span><span id="line-881"></span><span id="statePrimTyCon"><span class="annot"><span class="annottext">statePrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#statePrimTyCon"><span class="hs-identifier hs-var hs-var">statePrimTyCon</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [Role] -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon"><span class="hs-identifier hs-var">pcPrimTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#statePrimTyConName"><span class="hs-identifier hs-var">statePrimTyConName</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Nominal"><span class="hs-identifier hs-var">Nominal</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#VoidRep"><span class="hs-identifier hs-var">VoidRep</span></a></span><span>
</span><span id="line-882"></span><span>
</span><span id="line-883"></span><span class="hs-comment">{-
RealWorld is deeply magical.  It is *primitive*, but it is not
*unlifted* (hence ptrArg).  We never manipulate values of type
RealWorld; it's only used in the type system, to parameterise State#.
-}</span><span>
</span><span id="line-888"></span><span>
</span><span id="line-889"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#realWorldTyCon"><span class="hs-identifier hs-type">realWorldTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-890"></span><span id="realWorldTyCon"><span class="annot"><span class="annottext">realWorldTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#realWorldTyCon"><span class="hs-identifier hs-var hs-var">realWorldTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyConBinder] -&gt; Type -&gt; [Role] -&gt; TyCon
</span><a href="GHC.Core.TyCon.html#mkLiftedPrimTyCon"><span class="hs-identifier hs-var">mkLiftedPrimTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#realWorldTyConName"><span class="hs-identifier hs-var">realWorldTyConName</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#liftedTypeKind"><span class="hs-identifier hs-var">liftedTypeKind</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-891"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#realWorldTy"><span class="hs-identifier hs-type">realWorldTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-892"></span><span id="realWorldTy"><span class="annot"><span class="annottext">realWorldTy :: Type
</span><a href="GHC.Builtin.Types.Prim.html#realWorldTy"><span class="hs-identifier hs-var hs-var">realWorldTy</span></a></span></span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#realWorldTyCon"><span class="hs-identifier hs-var">realWorldTyCon</span></a></span><span>
</span><span id="line-893"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#realWorldStatePrimTy"><span class="hs-identifier hs-type">realWorldStatePrimTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-894"></span><span id="realWorldStatePrimTy"><span class="annot"><span class="annottext">realWorldStatePrimTy :: Type
</span><a href="GHC.Builtin.Types.Prim.html#realWorldStatePrimTy"><span class="hs-identifier hs-var hs-var">realWorldStatePrimTy</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Type -&gt; Type
</span><a href="GHC.Builtin.Types.Prim.html#mkStatePrimTy"><span class="hs-identifier hs-var">mkStatePrimTy</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.Prim.html#realWorldTy"><span class="hs-identifier hs-var">realWorldTy</span></a></span><span>        </span><span class="hs-comment">-- State# RealWorld</span><span>
</span><span id="line-895"></span><span>
</span><span id="line-896"></span><span class="hs-comment">-- Note: the ``state-pairing'' types are not truly primitive,</span><span>
</span><span id="line-897"></span><span class="hs-comment">-- so they are defined in \tr{GHC.Builtin.Types}, not here.</span><span>
</span><span id="line-898"></span><span>
</span><span id="line-899"></span><span>
</span><span id="line-900"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#voidPrimTy"><span class="hs-identifier hs-type">voidPrimTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-901"></span><span id="voidPrimTy"><span class="annot"><span class="annottext">voidPrimTy :: Type
</span><a href="GHC.Builtin.Types.Prim.html#voidPrimTy"><span class="hs-identifier hs-var hs-var">voidPrimTy</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#TyConApp"><span class="hs-identifier hs-var">TyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#voidPrimTyCon"><span class="hs-identifier hs-var">voidPrimTyCon</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-902"></span><span>
</span><span id="line-903"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#voidPrimTyCon"><span class="hs-identifier hs-type">voidPrimTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-904"></span><span id="voidPrimTyCon"><span class="annot"><span class="annottext">voidPrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#voidPrimTyCon"><span class="hs-identifier hs-var hs-var">voidPrimTyCon</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [Role] -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon"><span class="hs-identifier hs-var">pcPrimTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#voidPrimTyConName"><span class="hs-identifier hs-var">voidPrimTyConName</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#VoidRep"><span class="hs-identifier hs-var">VoidRep</span></a></span><span>
</span><span id="line-905"></span><span>
</span><span id="line-906"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkProxyPrimTy"><span class="hs-identifier hs-type">mkProxyPrimTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-907"></span><span id="mkProxyPrimTy"><span class="annot"><span class="annottext">mkProxyPrimTy :: Type -&gt; Type -&gt; Type
</span><a href="GHC.Builtin.Types.Prim.html#mkProxyPrimTy"><span class="hs-identifier hs-var hs-var">mkProxyPrimTy</span></a></span></span><span> </span><span id="local-6989586621680832004"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680832004"><span class="hs-identifier hs-var">k</span></a></span></span><span> </span><span id="local-6989586621680832003"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680832003"><span class="hs-identifier hs-var">ty</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#TyConApp"><span class="hs-identifier hs-var">TyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#proxyPrimTyCon"><span class="hs-identifier hs-var">proxyPrimTyCon</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680832004"><span class="hs-identifier hs-var">k</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680832003"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-908"></span><span>
</span><span id="line-909"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#proxyPrimTyCon"><span class="hs-identifier hs-type">proxyPrimTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-910"></span><span id="proxyPrimTyCon"><span class="annot"><span class="annottext">proxyPrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#proxyPrimTyCon"><span class="hs-identifier hs-var hs-var">proxyPrimTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyConBinder] -&gt; Type -&gt; [Role] -&gt; TyCon
</span><a href="GHC.Core.TyCon.html#mkPrimTyCon"><span class="hs-identifier hs-var">mkPrimTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#proxyPrimTyConName"><span class="hs-identifier hs-var">proxyPrimTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">[TyConBinder]
</span><a href="#local-6989586621680832002"><span class="hs-identifier hs-var">binders</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680832001"><span class="hs-identifier hs-var">res_kind</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Nominal"><span class="hs-identifier hs-var">Nominal</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Phantom"><span class="hs-identifier hs-var">Phantom</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-911"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-912"></span><span>     </span><span class="hs-comment">-- Kind: forall k. k -&gt; TYPE (Tuple '[])</span><span>
</span><span id="line-913"></span><span>     </span><span id="local-6989586621680832002"><span class="annot"><span class="annottext">binders :: [TyConBinder]
</span><a href="#local-6989586621680832002"><span class="hs-identifier hs-var hs-var">binders</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; ([Type] -&gt; [Type]) -&gt; [TyConBinder]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateTyConBinders"><span class="hs-identifier hs-var">mkTemplateTyConBinders</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#liftedTypeKind"><span class="hs-identifier hs-var">liftedTypeKind</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; [Type]
forall a. a -&gt; a
</span><a href="../../base/src/GHC.Base.html#id"><span class="hs-identifier hs-var">id</span></a></span><span>
</span><span id="line-914"></span><span>     </span><span id="local-6989586621680832001"><span class="annot"><span class="annottext">res_kind :: Type
</span><a href="#local-6989586621680832001"><span class="hs-identifier hs-var hs-var">res_kind</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; Type
</span><a href="GHC.Builtin.Types.html#unboxedTupleKind"><span class="hs-identifier hs-var">unboxedTupleKind</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-915"></span><span>
</span><span id="line-916"></span><span>
</span><span id="line-917"></span><span class="hs-comment">{- *********************************************************************
*                                                                      *
                Primitive equality constraints
    See Note [The equality types story]
*                                                                      *
********************************************************************* -}</span><span>
</span><span id="line-923"></span><span>
</span><span id="line-924"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#eqPrimTyCon"><span class="hs-identifier hs-type">eqPrimTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>  </span><span class="hs-comment">-- The representation type for equality predicates</span><span>
</span><span id="line-925"></span><span>                      </span><span class="hs-comment">-- See Note [The equality types story]</span><span>
</span><span id="line-926"></span><span id="eqPrimTyCon"><span class="annot"><span class="annottext">eqPrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#eqPrimTyCon"><span class="hs-identifier hs-var hs-var">eqPrimTyCon</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyConBinder] -&gt; Type -&gt; [Role] -&gt; TyCon
</span><a href="GHC.Core.TyCon.html#mkPrimTyCon"><span class="hs-identifier hs-var">mkPrimTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#eqPrimTyConName"><span class="hs-identifier hs-var">eqPrimTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">[TyConBinder]
</span><a href="#local-6989586621680831998"><span class="hs-identifier hs-var">binders</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831997"><span class="hs-identifier hs-var">res_kind</span></a></span><span> </span><span class="annot"><span class="annottext">[Role]
</span><a href="#local-6989586621680831996"><span class="hs-identifier hs-var">roles</span></a></span><span>
</span><span id="line-927"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-928"></span><span>    </span><span class="hs-comment">-- Kind :: forall k1 k2. k1 -&gt; k2 -&gt; TYPE (Tuple '[])</span><span>
</span><span id="line-929"></span><span>    </span><span id="local-6989586621680831998"><span class="annot"><span class="annottext">binders :: [TyConBinder]
</span><a href="#local-6989586621680831998"><span class="hs-identifier hs-var hs-var">binders</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; ([Type] -&gt; [Type]) -&gt; [TyConBinder]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateTyConBinders"><span class="hs-identifier hs-var">mkTemplateTyConBinders</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#liftedTypeKind"><span class="hs-identifier hs-var">liftedTypeKind</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#liftedTypeKind"><span class="hs-identifier hs-var">liftedTypeKind</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; [Type]
forall a. a -&gt; a
</span><a href="../../base/src/GHC.Base.html#id"><span class="hs-identifier hs-var">id</span></a></span><span>
</span><span id="line-930"></span><span>    </span><span id="local-6989586621680831997"><span class="annot"><span class="annottext">res_kind :: Type
</span><a href="#local-6989586621680831997"><span class="hs-identifier hs-var hs-var">res_kind</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; Type
</span><a href="GHC.Builtin.Types.html#unboxedTupleKind"><span class="hs-identifier hs-var">unboxedTupleKind</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-931"></span><span>    </span><span id="local-6989586621680831996"><span class="annot"><span class="annottext">roles :: [Role]
</span><a href="#local-6989586621680831996"><span class="hs-identifier hs-var hs-var">roles</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Nominal"><span class="hs-identifier hs-var">Nominal</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Nominal"><span class="hs-identifier hs-var">Nominal</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Nominal"><span class="hs-identifier hs-var">Nominal</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Nominal"><span class="hs-identifier hs-var">Nominal</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-932"></span><span>
</span><span id="line-933"></span><span class="hs-comment">-- like eqPrimTyCon, but the type for *Representational* coercions</span><span>
</span><span id="line-934"></span><span class="hs-comment">-- this should only ever appear as the type of a covar. Its role is</span><span>
</span><span id="line-935"></span><span class="hs-comment">-- interpreted in coercionRole</span><span>
</span><span id="line-936"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#eqReprPrimTyCon"><span class="hs-identifier hs-type">eqReprPrimTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>   </span><span class="hs-comment">-- See Note [The equality types story]</span><span>
</span><span id="line-937"></span><span id="eqReprPrimTyCon"><span class="annot"><span class="annottext">eqReprPrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#eqReprPrimTyCon"><span class="hs-identifier hs-var hs-var">eqReprPrimTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyConBinder] -&gt; Type -&gt; [Role] -&gt; TyCon
</span><a href="GHC.Core.TyCon.html#mkPrimTyCon"><span class="hs-identifier hs-var">mkPrimTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#eqReprPrimTyConName"><span class="hs-identifier hs-var">eqReprPrimTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">[TyConBinder]
</span><a href="#local-6989586621680831995"><span class="hs-identifier hs-var">binders</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831994"><span class="hs-identifier hs-var">res_kind</span></a></span><span> </span><span class="annot"><span class="annottext">[Role]
</span><a href="#local-6989586621680831993"><span class="hs-identifier hs-var">roles</span></a></span><span>
</span><span id="line-938"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-939"></span><span>    </span><span class="hs-comment">-- Kind :: forall k1 k2. k1 -&gt; k2 -&gt; TYPE (Tuple '[])</span><span>
</span><span id="line-940"></span><span>    </span><span id="local-6989586621680831995"><span class="annot"><span class="annottext">binders :: [TyConBinder]
</span><a href="#local-6989586621680831995"><span class="hs-identifier hs-var hs-var">binders</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; ([Type] -&gt; [Type]) -&gt; [TyConBinder]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateTyConBinders"><span class="hs-identifier hs-var">mkTemplateTyConBinders</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#liftedTypeKind"><span class="hs-identifier hs-var">liftedTypeKind</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#liftedTypeKind"><span class="hs-identifier hs-var">liftedTypeKind</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; [Type]
forall a. a -&gt; a
</span><a href="../../base/src/GHC.Base.html#id"><span class="hs-identifier hs-var">id</span></a></span><span>
</span><span id="line-941"></span><span>    </span><span id="local-6989586621680831994"><span class="annot"><span class="annottext">res_kind :: Type
</span><a href="#local-6989586621680831994"><span class="hs-identifier hs-var hs-var">res_kind</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; Type
</span><a href="GHC.Builtin.Types.html#unboxedTupleKind"><span class="hs-identifier hs-var">unboxedTupleKind</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-942"></span><span>    </span><span id="local-6989586621680831993"><span class="annot"><span class="annottext">roles :: [Role]
</span><a href="#local-6989586621680831993"><span class="hs-identifier hs-var hs-var">roles</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Nominal"><span class="hs-identifier hs-var">Nominal</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Nominal"><span class="hs-identifier hs-var">Nominal</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Representational"><span class="hs-identifier hs-var">Representational</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Representational"><span class="hs-identifier hs-var">Representational</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-943"></span><span>
</span><span id="line-944"></span><span class="hs-comment">-- like eqPrimTyCon, but the type for *Phantom* coercions.</span><span>
</span><span id="line-945"></span><span class="hs-comment">-- This is only used to make higher-order equalities. Nothing</span><span>
</span><span id="line-946"></span><span class="hs-comment">-- should ever actually have this type!</span><span>
</span><span id="line-947"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#eqPhantPrimTyCon"><span class="hs-identifier hs-type">eqPhantPrimTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-948"></span><span id="eqPhantPrimTyCon"><span class="annot"><span class="annottext">eqPhantPrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#eqPhantPrimTyCon"><span class="hs-identifier hs-var hs-var">eqPhantPrimTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyConBinder] -&gt; Type -&gt; [Role] -&gt; TyCon
</span><a href="GHC.Core.TyCon.html#mkPrimTyCon"><span class="hs-identifier hs-var">mkPrimTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#eqPhantPrimTyConName"><span class="hs-identifier hs-var">eqPhantPrimTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">[TyConBinder]
</span><a href="#local-6989586621680831991"><span class="hs-identifier hs-var">binders</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831990"><span class="hs-identifier hs-var">res_kind</span></a></span><span> </span><span class="annot"><span class="annottext">[Role]
</span><a href="#local-6989586621680831989"><span class="hs-identifier hs-var">roles</span></a></span><span>
</span><span id="line-949"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-950"></span><span>    </span><span class="hs-comment">-- Kind :: forall k1 k2. k1 -&gt; k2 -&gt; TYPE (Tuple '[])</span><span>
</span><span id="line-951"></span><span>    </span><span id="local-6989586621680831991"><span class="annot"><span class="annottext">binders :: [TyConBinder]
</span><a href="#local-6989586621680831991"><span class="hs-identifier hs-var hs-var">binders</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; ([Type] -&gt; [Type]) -&gt; [TyConBinder]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateTyConBinders"><span class="hs-identifier hs-var">mkTemplateTyConBinders</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#liftedTypeKind"><span class="hs-identifier hs-var">liftedTypeKind</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#liftedTypeKind"><span class="hs-identifier hs-var">liftedTypeKind</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; [Type]
forall a. a -&gt; a
</span><a href="../../base/src/GHC.Base.html#id"><span class="hs-identifier hs-var">id</span></a></span><span>
</span><span id="line-952"></span><span>    </span><span id="local-6989586621680831990"><span class="annot"><span class="annottext">res_kind :: Type
</span><a href="#local-6989586621680831990"><span class="hs-identifier hs-var hs-var">res_kind</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; Type
</span><a href="GHC.Builtin.Types.html#unboxedTupleKind"><span class="hs-identifier hs-var">unboxedTupleKind</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-953"></span><span>    </span><span id="local-6989586621680831989"><span class="annot"><span class="annottext">roles :: [Role]
</span><a href="#local-6989586621680831989"><span class="hs-identifier hs-var hs-var">roles</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Nominal"><span class="hs-identifier hs-var">Nominal</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Nominal"><span class="hs-identifier hs-var">Nominal</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Phantom"><span class="hs-identifier hs-var">Phantom</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Phantom"><span class="hs-identifier hs-var">Phantom</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-954"></span><span>
</span><span id="line-955"></span><span class="hs-comment">-- | Given a Role, what TyCon is the type of equality predicates at that role?</span><span>
</span><span id="line-956"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#equalityTyCon"><span class="hs-identifier hs-type">equalityTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Coercion.Axiom.html#Role"><span class="hs-identifier hs-type">Role</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-957"></span><span id="equalityTyCon"><span class="annot"><span class="annottext">equalityTyCon :: Role -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#equalityTyCon"><span class="hs-identifier hs-var hs-var">equalityTyCon</span></a></span></span><span> </span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Nominal"><span class="hs-identifier hs-var">Nominal</span></a></span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#eqPrimTyCon"><span class="hs-identifier hs-var">eqPrimTyCon</span></a></span><span>
</span><span id="line-958"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#equalityTyCon"><span class="hs-identifier hs-var">equalityTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Representational"><span class="hs-identifier hs-var">Representational</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#eqReprPrimTyCon"><span class="hs-identifier hs-var">eqReprPrimTyCon</span></a></span><span>
</span><span id="line-959"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#equalityTyCon"><span class="hs-identifier hs-var">equalityTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Phantom"><span class="hs-identifier hs-var">Phantom</span></a></span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#eqPhantPrimTyCon"><span class="hs-identifier hs-var">eqPhantPrimTyCon</span></a></span><span>
</span><span id="line-960"></span><span>
</span><span id="line-961"></span><span class="hs-comment">{- *********************************************************************
*                                                                      *
             The primitive array types
*                                                                      *
********************************************************************* -}</span><span>
</span><span id="line-966"></span><span>
</span><span id="line-967"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#arrayPrimTyCon"><span class="hs-identifier hs-type">arrayPrimTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mutableArrayPrimTyCon"><span class="hs-identifier hs-type">mutableArrayPrimTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mutableByteArrayPrimTyCon"><span class="hs-identifier hs-type">mutableByteArrayPrimTyCon</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-968"></span><span>    </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#byteArrayPrimTyCon"><span class="hs-identifier hs-type">byteArrayPrimTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#arrayArrayPrimTyCon"><span class="hs-identifier hs-type">arrayArrayPrimTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mutableArrayArrayPrimTyCon"><span class="hs-identifier hs-type">mutableArrayArrayPrimTyCon</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-969"></span><span>    </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#smallArrayPrimTyCon"><span class="hs-identifier hs-type">smallArrayPrimTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#smallMutableArrayPrimTyCon"><span class="hs-identifier hs-type">smallMutableArrayPrimTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-970"></span><span id="arrayPrimTyCon"><span class="annot"><span class="annottext">arrayPrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#arrayPrimTyCon"><span class="hs-identifier hs-var hs-var">arrayPrimTyCon</span></a></span></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [Role] -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon"><span class="hs-identifier hs-var">pcPrimTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#arrayPrimTyConName"><span class="hs-identifier hs-var">arrayPrimTyConName</span></a></span><span>             </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Representational"><span class="hs-identifier hs-var">Representational</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#UnliftedRep"><span class="hs-identifier hs-var">UnliftedRep</span></a></span><span>
</span><span id="line-971"></span><span id="mutableArrayPrimTyCon"><span class="annot"><span class="annottext">mutableArrayPrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#mutableArrayPrimTyCon"><span class="hs-identifier hs-var hs-var">mutableArrayPrimTyCon</span></a></span></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [Role] -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon"><span class="hs-identifier hs-var">pcPrimTyCon</span></a></span><span>  </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#mutableArrayPrimTyConName"><span class="hs-identifier hs-var">mutableArrayPrimTyConName</span></a></span><span>     </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Nominal"><span class="hs-identifier hs-var">Nominal</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Representational"><span class="hs-identifier hs-var">Representational</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#UnliftedRep"><span class="hs-identifier hs-var">UnliftedRep</span></a></span><span>
</span><span id="line-972"></span><span id="mutableByteArrayPrimTyCon"><span class="annot"><span class="annottext">mutableByteArrayPrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#mutableByteArrayPrimTyCon"><span class="hs-identifier hs-var hs-var">mutableByteArrayPrimTyCon</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [Role] -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon"><span class="hs-identifier hs-var">pcPrimTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#mutableByteArrayPrimTyConName"><span class="hs-identifier hs-var">mutableByteArrayPrimTyConName</span></a></span><span>  </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Nominal"><span class="hs-identifier hs-var">Nominal</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#UnliftedRep"><span class="hs-identifier hs-var">UnliftedRep</span></a></span><span>
</span><span id="line-973"></span><span id="byteArrayPrimTyCon"><span class="annot"><span class="annottext">byteArrayPrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#byteArrayPrimTyCon"><span class="hs-identifier hs-var hs-var">byteArrayPrimTyCon</span></a></span></span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon0"><span class="hs-identifier hs-var">pcPrimTyCon0</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#byteArrayPrimTyConName"><span class="hs-identifier hs-var">byteArrayPrimTyConName</span></a></span><span>        </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#UnliftedRep"><span class="hs-identifier hs-var">UnliftedRep</span></a></span><span>
</span><span id="line-974"></span><span id="arrayArrayPrimTyCon"><span class="annot"><span class="annottext">arrayArrayPrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#arrayArrayPrimTyCon"><span class="hs-identifier hs-var hs-var">arrayArrayPrimTyCon</span></a></span></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon0"><span class="hs-identifier hs-var">pcPrimTyCon0</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#arrayArrayPrimTyConName"><span class="hs-identifier hs-var">arrayArrayPrimTyConName</span></a></span><span>       </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#UnliftedRep"><span class="hs-identifier hs-var">UnliftedRep</span></a></span><span>
</span><span id="line-975"></span><span id="mutableArrayArrayPrimTyCon"><span class="annot"><span class="annottext">mutableArrayArrayPrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#mutableArrayArrayPrimTyCon"><span class="hs-identifier hs-var hs-var">mutableArrayArrayPrimTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [Role] -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon"><span class="hs-identifier hs-var">pcPrimTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#mutableArrayArrayPrimTyConName"><span class="hs-identifier hs-var">mutableArrayArrayPrimTyConName</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Nominal"><span class="hs-identifier hs-var">Nominal</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#UnliftedRep"><span class="hs-identifier hs-var">UnliftedRep</span></a></span><span>
</span><span id="line-976"></span><span id="smallArrayPrimTyCon"><span class="annot"><span class="annottext">smallArrayPrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#smallArrayPrimTyCon"><span class="hs-identifier hs-var hs-var">smallArrayPrimTyCon</span></a></span></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [Role] -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon"><span class="hs-identifier hs-var">pcPrimTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#smallArrayPrimTyConName"><span class="hs-identifier hs-var">smallArrayPrimTyConName</span></a></span><span>        </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Representational"><span class="hs-identifier hs-var">Representational</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#UnliftedRep"><span class="hs-identifier hs-var">UnliftedRep</span></a></span><span>
</span><span id="line-977"></span><span id="smallMutableArrayPrimTyCon"><span class="annot"><span class="annottext">smallMutableArrayPrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#smallMutableArrayPrimTyCon"><span class="hs-identifier hs-var hs-var">smallMutableArrayPrimTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [Role] -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon"><span class="hs-identifier hs-var">pcPrimTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#smallMutableArrayPrimTyConName"><span class="hs-identifier hs-var">smallMutableArrayPrimTyConName</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Nominal"><span class="hs-identifier hs-var">Nominal</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Representational"><span class="hs-identifier hs-var">Representational</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#UnliftedRep"><span class="hs-identifier hs-var">UnliftedRep</span></a></span><span>
</span><span id="line-978"></span><span>
</span><span id="line-979"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkArrayPrimTy"><span class="hs-identifier hs-type">mkArrayPrimTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-980"></span><span id="mkArrayPrimTy"><span class="annot"><span class="annottext">mkArrayPrimTy :: Type -&gt; Type
</span><a href="GHC.Builtin.Types.Prim.html#mkArrayPrimTy"><span class="hs-identifier hs-var hs-var">mkArrayPrimTy</span></a></span></span><span> </span><span id="local-6989586621680831988"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831988"><span class="hs-identifier hs-var">elt</span></a></span></span><span>           </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#TyConApp"><span class="hs-identifier hs-var">TyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#arrayPrimTyCon"><span class="hs-identifier hs-var">arrayPrimTyCon</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831988"><span class="hs-identifier hs-var">elt</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-981"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#byteArrayPrimTy"><span class="hs-identifier hs-type">byteArrayPrimTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-982"></span><span id="byteArrayPrimTy"><span class="annot"><span class="annottext">byteArrayPrimTy :: Type
</span><a href="GHC.Builtin.Types.Prim.html#byteArrayPrimTy"><span class="hs-identifier hs-var hs-var">byteArrayPrimTy</span></a></span></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#byteArrayPrimTyCon"><span class="hs-identifier hs-var">byteArrayPrimTyCon</span></a></span><span>
</span><span id="line-983"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkArrayArrayPrimTy"><span class="hs-identifier hs-type">mkArrayArrayPrimTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-984"></span><span id="mkArrayArrayPrimTy"><span class="annot"><span class="annottext">mkArrayArrayPrimTy :: Type
</span><a href="GHC.Builtin.Types.Prim.html#mkArrayArrayPrimTy"><span class="hs-identifier hs-var hs-var">mkArrayArrayPrimTy</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#arrayArrayPrimTyCon"><span class="hs-identifier hs-var">arrayArrayPrimTyCon</span></a></span><span>
</span><span id="line-985"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkSmallArrayPrimTy"><span class="hs-identifier hs-type">mkSmallArrayPrimTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-986"></span><span id="mkSmallArrayPrimTy"><span class="annot"><span class="annottext">mkSmallArrayPrimTy :: Type -&gt; Type
</span><a href="GHC.Builtin.Types.Prim.html#mkSmallArrayPrimTy"><span class="hs-identifier hs-var hs-var">mkSmallArrayPrimTy</span></a></span></span><span> </span><span id="local-6989586621680831987"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831987"><span class="hs-identifier hs-var">elt</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#TyConApp"><span class="hs-identifier hs-var">TyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#smallArrayPrimTyCon"><span class="hs-identifier hs-var">smallArrayPrimTyCon</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831987"><span class="hs-identifier hs-var">elt</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-987"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkMutableArrayPrimTy"><span class="hs-identifier hs-type">mkMutableArrayPrimTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-988"></span><span id="mkMutableArrayPrimTy"><span class="annot"><span class="annottext">mkMutableArrayPrimTy :: Type -&gt; Type -&gt; Type
</span><a href="GHC.Builtin.Types.Prim.html#mkMutableArrayPrimTy"><span class="hs-identifier hs-var hs-var">mkMutableArrayPrimTy</span></a></span></span><span> </span><span id="local-6989586621680831986"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831986"><span class="hs-identifier hs-var">s</span></a></span></span><span> </span><span id="local-6989586621680831985"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831985"><span class="hs-identifier hs-var">elt</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#TyConApp"><span class="hs-identifier hs-var">TyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#mutableArrayPrimTyCon"><span class="hs-identifier hs-var">mutableArrayPrimTyCon</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831986"><span class="hs-identifier hs-var">s</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831985"><span class="hs-identifier hs-var">elt</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-989"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkMutableByteArrayPrimTy"><span class="hs-identifier hs-type">mkMutableByteArrayPrimTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-990"></span><span id="mkMutableByteArrayPrimTy"><span class="annot"><span class="annottext">mkMutableByteArrayPrimTy :: Type -&gt; Type
</span><a href="GHC.Builtin.Types.Prim.html#mkMutableByteArrayPrimTy"><span class="hs-identifier hs-var hs-var">mkMutableByteArrayPrimTy</span></a></span></span><span> </span><span id="local-6989586621680831984"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831984"><span class="hs-identifier hs-var">s</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#TyConApp"><span class="hs-identifier hs-var">TyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#mutableByteArrayPrimTyCon"><span class="hs-identifier hs-var">mutableByteArrayPrimTyCon</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831984"><span class="hs-identifier hs-var">s</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-991"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkMutableArrayArrayPrimTy"><span class="hs-identifier hs-type">mkMutableArrayArrayPrimTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-992"></span><span id="mkMutableArrayArrayPrimTy"><span class="annot"><span class="annottext">mkMutableArrayArrayPrimTy :: Type -&gt; Type
</span><a href="GHC.Builtin.Types.Prim.html#mkMutableArrayArrayPrimTy"><span class="hs-identifier hs-var hs-var">mkMutableArrayArrayPrimTy</span></a></span></span><span> </span><span id="local-6989586621680831983"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831983"><span class="hs-identifier hs-var">s</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#TyConApp"><span class="hs-identifier hs-var">TyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#mutableArrayArrayPrimTyCon"><span class="hs-identifier hs-var">mutableArrayArrayPrimTyCon</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831983"><span class="hs-identifier hs-var">s</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-993"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkSmallMutableArrayPrimTy"><span class="hs-identifier hs-type">mkSmallMutableArrayPrimTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-994"></span><span id="mkSmallMutableArrayPrimTy"><span class="annot"><span class="annottext">mkSmallMutableArrayPrimTy :: Type -&gt; Type -&gt; Type
</span><a href="GHC.Builtin.Types.Prim.html#mkSmallMutableArrayPrimTy"><span class="hs-identifier hs-var hs-var">mkSmallMutableArrayPrimTy</span></a></span></span><span> </span><span id="local-6989586621680831982"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831982"><span class="hs-identifier hs-var">s</span></a></span></span><span> </span><span id="local-6989586621680831981"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831981"><span class="hs-identifier hs-var">elt</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#TyConApp"><span class="hs-identifier hs-var">TyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#smallMutableArrayPrimTyCon"><span class="hs-identifier hs-var">smallMutableArrayPrimTyCon</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831982"><span class="hs-identifier hs-var">s</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831981"><span class="hs-identifier hs-var">elt</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-995"></span><span>
</span><span id="line-996"></span><span>
</span><span id="line-997"></span><span class="hs-comment">{- *********************************************************************
*                                                                      *
                The mutable variable type
*                                                                      *
********************************************************************* -}</span><span>
</span><span id="line-1002"></span><span>
</span><span id="line-1003"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mutVarPrimTyCon"><span class="hs-identifier hs-type">mutVarPrimTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1004"></span><span id="mutVarPrimTyCon"><span class="annot"><span class="annottext">mutVarPrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#mutVarPrimTyCon"><span class="hs-identifier hs-var hs-var">mutVarPrimTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [Role] -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon"><span class="hs-identifier hs-var">pcPrimTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#mutVarPrimTyConName"><span class="hs-identifier hs-var">mutVarPrimTyConName</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Nominal"><span class="hs-identifier hs-var">Nominal</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Representational"><span class="hs-identifier hs-var">Representational</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#UnliftedRep"><span class="hs-identifier hs-var">UnliftedRep</span></a></span><span>
</span><span id="line-1005"></span><span>
</span><span id="line-1006"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkMutVarPrimTy"><span class="hs-identifier hs-type">mkMutVarPrimTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1007"></span><span id="mkMutVarPrimTy"><span class="annot"><span class="annottext">mkMutVarPrimTy :: Type -&gt; Type -&gt; Type
</span><a href="GHC.Builtin.Types.Prim.html#mkMutVarPrimTy"><span class="hs-identifier hs-var hs-var">mkMutVarPrimTy</span></a></span></span><span> </span><span id="local-6989586621680831980"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831980"><span class="hs-identifier hs-var">s</span></a></span></span><span> </span><span id="local-6989586621680831979"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831979"><span class="hs-identifier hs-var">elt</span></a></span></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#TyConApp"><span class="hs-identifier hs-var">TyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#mutVarPrimTyCon"><span class="hs-identifier hs-var">mutVarPrimTyCon</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831980"><span class="hs-identifier hs-var">s</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831979"><span class="hs-identifier hs-var">elt</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1008"></span><span>
</span><span id="line-1009"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
\subsection[TysPrim-io-port-var]{The synchronizing I/O Port type}
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-1016"></span><span>
</span><span id="line-1017"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#ioPortPrimTyCon"><span class="hs-identifier hs-type">ioPortPrimTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1018"></span><span id="ioPortPrimTyCon"><span class="annot"><span class="annottext">ioPortPrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#ioPortPrimTyCon"><span class="hs-identifier hs-var hs-var">ioPortPrimTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [Role] -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon"><span class="hs-identifier hs-var">pcPrimTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#ioPortPrimTyConName"><span class="hs-identifier hs-var">ioPortPrimTyConName</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Nominal"><span class="hs-identifier hs-var">Nominal</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Representational"><span class="hs-identifier hs-var">Representational</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#UnliftedRep"><span class="hs-identifier hs-var">UnliftedRep</span></a></span><span>
</span><span id="line-1019"></span><span>
</span><span id="line-1020"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkIOPortPrimTy"><span class="hs-identifier hs-type">mkIOPortPrimTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1021"></span><span id="mkIOPortPrimTy"><span class="annot"><span class="annottext">mkIOPortPrimTy :: Type -&gt; Type -&gt; Type
</span><a href="GHC.Builtin.Types.Prim.html#mkIOPortPrimTy"><span class="hs-identifier hs-var hs-var">mkIOPortPrimTy</span></a></span></span><span> </span><span id="local-6989586621680831978"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831978"><span class="hs-identifier hs-var">s</span></a></span></span><span> </span><span id="local-6989586621680831977"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831977"><span class="hs-identifier hs-var">elt</span></a></span></span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#TyConApp"><span class="hs-identifier hs-var">TyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#ioPortPrimTyCon"><span class="hs-identifier hs-var">ioPortPrimTyCon</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831978"><span class="hs-identifier hs-var">s</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831977"><span class="hs-identifier hs-var">elt</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1022"></span><span>
</span><span id="line-1023"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
   The synchronizing variable type
\subsection[TysPrim-synch-var]{The synchronizing variable type}
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-1031"></span><span>
</span><span id="line-1032"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mVarPrimTyCon"><span class="hs-identifier hs-type">mVarPrimTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1033"></span><span id="mVarPrimTyCon"><span class="annot"><span class="annottext">mVarPrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#mVarPrimTyCon"><span class="hs-identifier hs-var hs-var">mVarPrimTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [Role] -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon"><span class="hs-identifier hs-var">pcPrimTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#mVarPrimTyConName"><span class="hs-identifier hs-var">mVarPrimTyConName</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Nominal"><span class="hs-identifier hs-var">Nominal</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Representational"><span class="hs-identifier hs-var">Representational</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#UnliftedRep"><span class="hs-identifier hs-var">UnliftedRep</span></a></span><span>
</span><span id="line-1034"></span><span>
</span><span id="line-1035"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkMVarPrimTy"><span class="hs-identifier hs-type">mkMVarPrimTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1036"></span><span id="mkMVarPrimTy"><span class="annot"><span class="annottext">mkMVarPrimTy :: Type -&gt; Type -&gt; Type
</span><a href="GHC.Builtin.Types.Prim.html#mkMVarPrimTy"><span class="hs-identifier hs-var hs-var">mkMVarPrimTy</span></a></span></span><span> </span><span id="local-6989586621680831976"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831976"><span class="hs-identifier hs-var">s</span></a></span></span><span> </span><span id="local-6989586621680831975"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831975"><span class="hs-identifier hs-var">elt</span></a></span></span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#TyConApp"><span class="hs-identifier hs-var">TyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#mVarPrimTyCon"><span class="hs-identifier hs-var">mVarPrimTyCon</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831976"><span class="hs-identifier hs-var">s</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831975"><span class="hs-identifier hs-var">elt</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1037"></span><span>
</span><span id="line-1038"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
   The transactional variable type
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-1045"></span><span>
</span><span id="line-1046"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#tVarPrimTyCon"><span class="hs-identifier hs-type">tVarPrimTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1047"></span><span id="tVarPrimTyCon"><span class="annot"><span class="annottext">tVarPrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#tVarPrimTyCon"><span class="hs-identifier hs-var hs-var">tVarPrimTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [Role] -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon"><span class="hs-identifier hs-var">pcPrimTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#tVarPrimTyConName"><span class="hs-identifier hs-var">tVarPrimTyConName</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Nominal"><span class="hs-identifier hs-var">Nominal</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Representational"><span class="hs-identifier hs-var">Representational</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#UnliftedRep"><span class="hs-identifier hs-var">UnliftedRep</span></a></span><span>
</span><span id="line-1048"></span><span>
</span><span id="line-1049"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkTVarPrimTy"><span class="hs-identifier hs-type">mkTVarPrimTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1050"></span><span id="mkTVarPrimTy"><span class="annot"><span class="annottext">mkTVarPrimTy :: Type -&gt; Type -&gt; Type
</span><a href="GHC.Builtin.Types.Prim.html#mkTVarPrimTy"><span class="hs-identifier hs-var hs-var">mkTVarPrimTy</span></a></span></span><span> </span><span id="local-6989586621680831974"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831974"><span class="hs-identifier hs-var">s</span></a></span></span><span> </span><span id="local-6989586621680831973"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831973"><span class="hs-identifier hs-var">elt</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#TyConApp"><span class="hs-identifier hs-var">TyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#tVarPrimTyCon"><span class="hs-identifier hs-var">tVarPrimTyCon</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831974"><span class="hs-identifier hs-var">s</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831973"><span class="hs-identifier hs-var">elt</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1051"></span><span>
</span><span id="line-1052"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
   The stable-pointer type
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-1059"></span><span>
</span><span id="line-1060"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#stablePtrPrimTyCon"><span class="hs-identifier hs-type">stablePtrPrimTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1061"></span><span id="stablePtrPrimTyCon"><span class="annot"><span class="annottext">stablePtrPrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#stablePtrPrimTyCon"><span class="hs-identifier hs-var hs-var">stablePtrPrimTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [Role] -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon"><span class="hs-identifier hs-var">pcPrimTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#stablePtrPrimTyConName"><span class="hs-identifier hs-var">stablePtrPrimTyConName</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Representational"><span class="hs-identifier hs-var">Representational</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#AddrRep"><span class="hs-identifier hs-var">AddrRep</span></a></span><span>
</span><span id="line-1062"></span><span>
</span><span id="line-1063"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkStablePtrPrimTy"><span class="hs-identifier hs-type">mkStablePtrPrimTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1064"></span><span id="mkStablePtrPrimTy"><span class="annot"><span class="annottext">mkStablePtrPrimTy :: Type -&gt; Type
</span><a href="GHC.Builtin.Types.Prim.html#mkStablePtrPrimTy"><span class="hs-identifier hs-var hs-var">mkStablePtrPrimTy</span></a></span></span><span> </span><span id="local-6989586621680831972"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831972"><span class="hs-identifier hs-var">ty</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#TyConApp"><span class="hs-identifier hs-var">TyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#stablePtrPrimTyCon"><span class="hs-identifier hs-var">stablePtrPrimTyCon</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831972"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1065"></span><span>
</span><span id="line-1066"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
   The stable-name type
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-1073"></span><span>
</span><span id="line-1074"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#stableNamePrimTyCon"><span class="hs-identifier hs-type">stableNamePrimTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1075"></span><span id="stableNamePrimTyCon"><span class="annot"><span class="annottext">stableNamePrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#stableNamePrimTyCon"><span class="hs-identifier hs-var hs-var">stableNamePrimTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [Role] -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon"><span class="hs-identifier hs-var">pcPrimTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#stableNamePrimTyConName"><span class="hs-identifier hs-var">stableNamePrimTyConName</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Phantom"><span class="hs-identifier hs-var">Phantom</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#UnliftedRep"><span class="hs-identifier hs-var">UnliftedRep</span></a></span><span>
</span><span id="line-1076"></span><span>
</span><span id="line-1077"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkStableNamePrimTy"><span class="hs-identifier hs-type">mkStableNamePrimTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1078"></span><span id="mkStableNamePrimTy"><span class="annot"><span class="annottext">mkStableNamePrimTy :: Type -&gt; Type
</span><a href="GHC.Builtin.Types.Prim.html#mkStableNamePrimTy"><span class="hs-identifier hs-var hs-var">mkStableNamePrimTy</span></a></span></span><span> </span><span id="local-6989586621680831971"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831971"><span class="hs-identifier hs-var">ty</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#TyConApp"><span class="hs-identifier hs-var">TyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#stableNamePrimTyCon"><span class="hs-identifier hs-var">stableNamePrimTyCon</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831971"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1079"></span><span>
</span><span id="line-1080"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
   The Compact NFData (CNF) type
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-1087"></span><span>
</span><span id="line-1088"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#compactPrimTyCon"><span class="hs-identifier hs-type">compactPrimTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1089"></span><span id="compactPrimTyCon"><span class="annot"><span class="annottext">compactPrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#compactPrimTyCon"><span class="hs-identifier hs-var hs-var">compactPrimTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon0"><span class="hs-identifier hs-var">pcPrimTyCon0</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#compactPrimTyConName"><span class="hs-identifier hs-var">compactPrimTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#UnliftedRep"><span class="hs-identifier hs-var">UnliftedRep</span></a></span><span>
</span><span id="line-1090"></span><span>
</span><span id="line-1091"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#compactPrimTy"><span class="hs-identifier hs-type">compactPrimTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1092"></span><span id="compactPrimTy"><span class="annot"><span class="annottext">compactPrimTy :: Type
</span><a href="GHC.Builtin.Types.Prim.html#compactPrimTy"><span class="hs-identifier hs-var hs-var">compactPrimTy</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#compactPrimTyCon"><span class="hs-identifier hs-var">compactPrimTyCon</span></a></span><span>
</span><span id="line-1093"></span><span>
</span><span id="line-1094"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
   The ``bytecode object'' type
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-1101"></span><span>
</span><span id="line-1102"></span><span class="hs-comment">-- Unlike most other primitive types, BCO is lifted. This is because in</span><span>
</span><span id="line-1103"></span><span class="hs-comment">-- general a BCO may be a thunk for the reasons given in Note [Updatable CAF</span><span>
</span><span id="line-1104"></span><span class="hs-comment">-- BCOs] in GHCi.CreateBCO.</span><span>
</span><span id="line-1105"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#bcoPrimTy"><span class="hs-identifier hs-type">bcoPrimTy</span></a></span><span>    </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1106"></span><span id="bcoPrimTy"><span class="annot"><span class="annottext">bcoPrimTy :: Type
</span><a href="GHC.Builtin.Types.Prim.html#bcoPrimTy"><span class="hs-identifier hs-var hs-var">bcoPrimTy</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#bcoPrimTyCon"><span class="hs-identifier hs-var">bcoPrimTyCon</span></a></span><span>
</span><span id="line-1107"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#bcoPrimTyCon"><span class="hs-identifier hs-type">bcoPrimTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1108"></span><span id="bcoPrimTyCon"><span class="annot"><span class="annottext">bcoPrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#bcoPrimTyCon"><span class="hs-identifier hs-var hs-var">bcoPrimTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon0"><span class="hs-identifier hs-var">pcPrimTyCon0</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#bcoPrimTyConName"><span class="hs-identifier hs-var">bcoPrimTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#LiftedRep"><span class="hs-identifier hs-var">LiftedRep</span></a></span><span>
</span><span id="line-1109"></span><span>
</span><span id="line-1110"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
   The ``weak pointer'' type
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-1117"></span><span>
</span><span id="line-1118"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#weakPrimTyCon"><span class="hs-identifier hs-type">weakPrimTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1119"></span><span id="weakPrimTyCon"><span class="annot"><span class="annottext">weakPrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#weakPrimTyCon"><span class="hs-identifier hs-var hs-var">weakPrimTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [Role] -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon"><span class="hs-identifier hs-var">pcPrimTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#weakPrimTyConName"><span class="hs-identifier hs-var">weakPrimTyConName</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Representational"><span class="hs-identifier hs-var">Representational</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#UnliftedRep"><span class="hs-identifier hs-var">UnliftedRep</span></a></span><span>
</span><span id="line-1120"></span><span>
</span><span id="line-1121"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#mkWeakPrimTy"><span class="hs-identifier hs-type">mkWeakPrimTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1122"></span><span id="mkWeakPrimTy"><span class="annot"><span class="annottext">mkWeakPrimTy :: Type -&gt; Type
</span><a href="GHC.Builtin.Types.Prim.html#mkWeakPrimTy"><span class="hs-identifier hs-var hs-var">mkWeakPrimTy</span></a></span></span><span> </span><span id="local-6989586621680831970"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831970"><span class="hs-identifier hs-var">v</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#TyConApp"><span class="hs-identifier hs-var">TyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#weakPrimTyCon"><span class="hs-identifier hs-var">weakPrimTyCon</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680831970"><span class="hs-identifier hs-var">v</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1123"></span><span>
</span><span id="line-1124"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
   The ``thread id'' type
*                                                                      *
************************************************************************

A thread id is represented by a pointer to the TSO itself, to ensure
that they are always unique and we can always find the TSO for a given
thread id.  However, this has the unfortunate consequence that a
ThreadId# for a given thread is treated as a root by the garbage
collector and can keep TSOs around for too long.

Hence the programmer API for thread manipulation uses a weak pointer
to the thread id internally.
-}</span><span>
</span><span id="line-1140"></span><span>
</span><span id="line-1141"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#threadIdPrimTy"><span class="hs-identifier hs-type">threadIdPrimTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1142"></span><span id="threadIdPrimTy"><span class="annot"><span class="annottext">threadIdPrimTy :: Type
</span><a href="GHC.Builtin.Types.Prim.html#threadIdPrimTy"><span class="hs-identifier hs-var hs-var">threadIdPrimTy</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#threadIdPrimTyCon"><span class="hs-identifier hs-var">threadIdPrimTyCon</span></a></span><span>
</span><span id="line-1143"></span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#threadIdPrimTyCon"><span class="hs-identifier hs-type">threadIdPrimTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1144"></span><span id="threadIdPrimTyCon"><span class="annot"><span class="annottext">threadIdPrimTyCon :: TyCon
</span><a href="GHC.Builtin.Types.Prim.html#threadIdPrimTyCon"><span class="hs-identifier hs-var hs-var">threadIdPrimTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; PrimRep -&gt; TyCon
</span><a href="GHC.Builtin.Types.Prim.html#pcPrimTyCon0"><span class="hs-identifier hs-var">pcPrimTyCon0</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#threadIdPrimTyConName"><span class="hs-identifier hs-var">threadIdPrimTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#UnliftedRep"><span class="hs-identifier hs-var">UnliftedRep</span></a></span><span>
</span><span id="line-1145"></span><span>
</span><span id="line-1146"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
\subsection{SIMD vector types}
*                                                                      *
************************************************************************
-}</span><span class="hs-cpp">

#include &quot;primop-vector-tys.hs-incl&quot;
</span></pre></body></html>